2014-07-29 1 views
1

OSGI-INF/serviceComponent.xml может быть создан с использованием Maven экр Феликсом плагин, добавив зависимость какФормирует OSGi-INF/serviceComponent.xml использованием Gradle

<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-scr-plugin</artifactId> 
    <version>1.15.0</version> 
    <executions> 
     <execution> 
      <id>generate-scr-scrdescriptor</id> 
      <goals> 
       <goal>scr</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

но Gradle я не в состоянии генерировать. . Я пытался добавить ошибку

buildscript { 
dependencies { 
    classpath group:'be.jlr-home.gradle' , name:'scrPlugin', version:'0.1.0' 

}} 
apply plugin: 'java' 
`apply plugin: 'eclipse' 
apply plugin: 'maven' 
apply plugin: 'osgi' 
    apply plugin: 'scr' 

Это дает, что be.jlr-home.gradle не найден.

Я делаю что-то неправильно ???

в основном мне нужна зависимость, чтобы добавить в Gradle для генерации этого servicecomponent.xml

ответ

0

Ваш специалист ПОМ сниппет настраивает плагин Maven для ЮКЖД с Феликсом. Вам нужен плагин gradle для обработки аннотации scr. Я не знаю, что у Феликса есть один. В проекте bnd добавлена ​​поддержка gradle (2.4.0.M1 включает плагин gradle для bnd), а bnd может обрабатывать аннотации для DS (но, возможно, не из Felix).

+0

Привет, Я новичок в Gradle и декларативные услуги. у вас есть какой-нибудь образец файла gradle, генерирующего XML, что было бы здорово .. – saviour23

0

Я решен вопрос

добавьте следующие строки в ваш файл Gradle и он будет работать.

ant.properties.src = 'src/main/java' 

ant.properties.classes = 'build/classes/main' task genscr(dependsOn: compileJava) << { println ant.properties.classes ant.taskdef(resource: 'scrtask.properties', classpath: configurations.compile.asPath) ant.scr(srcdir: ant.properties.src, destdir: ant.properties.classes, classpath: configurations.compile.asPath) }

jar.dependsOn(genscr) 
jar { 
manifest { 


// version = '1.0' 
     name = 'xxxxxxxxx' 
     instruction 'Service-Component', 'OSGI-INF/<PKGNAME>.<CLASSNAME>.xml'  

}

dependencies { 



......//All other dependencies........ 


compile 'org.apache.felix:org.apache.felix.scr.annotations:1.9.8' 
compile 'org.apache.felix:org.apache.felix.scr.ds-annotations:1.2.4' 
compile group: 'org.apache.felix', name: 'org.apache.felix.scr.ant', version: '1.110.' 

}

sourceSets.main.compileClasspath + = configurations.compile

0

@ золь saviour23 в ution не работает для меня

Оказывается, нам нужно изменить buildscript, и что град 1.6 не работает; после того, как я повысил уровень до 2.1, он отлично работает.

код Java:

import org.apache.felix.scr.annotations.*; 

@Component 
public class Bndtest { 
    public static void main(String[] args) { 
     System.out.println("Hello World"); 
    } 
} 

build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'be.jlr-home.gradle:scrPlugin:0.1.3' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'osgi' 
apply plugin: 'scr' 
apply plugin: 'groovy' 
apply plugin: 'maven' 


sourceCompatibility = 1.6 
targetCompatibility = 1.6 

version = '0.0.1-SNAPSHOT' 
group = 'be.jlrhome.gradle.scr' 
description = 'Gradle scr example' 

dependencies { 
    compile 'org.apache.felix:org.apache.felix.scr.annotations:1.9.8' 
} 

Gradle будет обернуть банку с правильной МАНИФЕСТЕ и OSGI XML

Смежные вопросы