当前位置: 首页 > 知识库问答 >
问题:

生成OSGI-INF/serviceComponent。使用gradle的xml

壤驷经国
2023-03-14

OSGI-INF/serviceComponent.xml可以使用maven scr felix插件通过添加依赖项生成,如

<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>

但对于格雷德尔来说,我无法生成。。我已尝试添加

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'

这是一个错误。捷豹路虎主页。找不到gradle。

我做错了什么???

基本上,我需要依赖项来添加gradle以生成servicecomponent。xml

共有3个答案

郑茂材
2023-03-14

@saviour23的解决方案对我不起作用

原来我们需要更改构建脚本,而gradle 1.6不起作用;在我升级到gradle 2.1后,它工作正常。

java代码:

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

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

建筑格拉德尔:

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将用正确的清单和OSGiXML包装一个jar

傅花蜂
2023-03-14

我已经解决了这个问题

将下面的行添加到gradle文件中,它就会工作。

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

蚂蚁。财产。classes='build/classes/main'任务GENCR(依赖项:compileJava)

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.'

}

源集。主要的compileClasspath=配置。编写

刘阳荣
2023-03-14

你的maven pom片段配置felix的scr的maven插件。你需要一个gradle插件用于scr注释处理。我不知道费利克斯有。bnd项目增加了gradle支持(2.4.0.M1包括bnd的gradle插件),bnd可以处理DS的注释(但可能不是Felix的注释)。

 类似资料:
  • 有人知道maven scr插件是否与java 10兼容吗? 我试图用java 10构建一个基于Equinox osgi的软件平台,我无法使用scr插件在目标文件夹中生成OSGI-INF文件夹结构(其中包含serviceComponents.xml)。 如果我在Java8中使用旧版本的scr插件(1.7.4),一切都可以正常工作。 如果我试图用java 10构建它,会发生以下错误。 [错误]无法执行

  • 我遵循了这个教程(使用基于XML的Spring配置): http://codetutr.com/2013/03/24/simple-spring-mvc-web-application-using-gradle/ 当我运行Jetty时,它可以工作,我可以看到“你好,CodeTuter!”在。 然后我修改构建。gradle生成ear文件: ear文件的生成没有问题,但是当我使用本地JBoss-4.0

  • 我正在尝试生成。jar,但是当它是使用Maven publishing生成的时候,它也生成了一个. pom文件。 问题是,我有另一个项目,当它实现这个依赖关系时,它以前只查找.jar,而现在它在所有其他项目中查找.pom,我想做的是,该项目停止使用“发布”任务生成.pom或在实现时停止寻找.pom文件以供其他项目使用。 下面是在 Artifactory 项目 A 中生成.jar的代码,其中项目 B

  • 我正在研究将现有的OSGI/blueprint项目从Maven迁移到Gradle。在Maven中,Maven bundle插件会扫描上下文XML文件,以查找代码中可能不会出现的导入,但是我无法将其与Gradle OSGI插件一起使用。 例如,蓝图XML包含这样的导入 使用POM中的指令与maven-bundle-plugin... 然后生成MANFEST。MF将包含这样的导入 但是,使用以下bui

  • 问题内容: 我想使用Gradle任务为 Java 项目生成Java类,类似于Android插件如何使用表示法创建,例如: 用例是我正在开发一个开源应用程序,该应用程序需要使用API​​密钥和机密。我拥有不致力于我的VCS 的密钥和秘密。 到目前为止,我有这个: 并且有效- 在指定位置生成该文件。但是它非常脆弱。明确命名软件包很容易出错。只要文件可以在其他软件包中生成(例如,在的根目录),只要能够使

  • 我在项目中使用声明性服务注释和gradle。 我已经在我的组件类中指定了相应的注释(@组件等)。我还在gradle文件中添加了felix scr注释项目的依赖项。但是,当我构建项目时,组件xml文件不会生成,清单中的Service-Component标头也不会生成。MF文件。 我在gradle中使用“osgi”插件来生成osgi包。 gradle提供这种支持吗?在maven中,可以使用maven