相关疑难解决方法(0)

如何为运行时依赖项添加Import-Package指令?

我正在使用Gradle构建一个OSGi jar,我在使用清单时遇到了一些麻烦.这是我的构建脚本的摘录:

apply plugin: 'java'
apply plugin: 'osgi'

jar {
    baseName = 'awesome'
    manifest {
        name = 'An Awesome Application'
        symbolicName = 'com.example.awesome'
//        instruction 'Import-Package', 'org.springframework.orm'
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,Gradle会检测我的依赖项并添加一个Import-Package包含所有编译时依赖项的函数.但是说我的应用程序也有运行时依赖性org.springframework.orm,我如何告诉Gradle将其作为参数包含在内Import-Package

如果上面的注释行未注释,则生成的Import-Package指令 指定org.springframework.orm.这让我困惑,因为在摇篮文档OsgiManifest状态

OsgiManifest instruction(String name, String... values)

为指令添加参数.如果指令不存在,则创建它.如果它存在,则参数将附加到现有参数.

但是,这似乎不适用于自动检测到的Import-Package参数.如果我指定instruction 'Import-Package', 'my.dependency.1'等等,并jar.manifest.instructions在其间打印,我可以看到它们是如何按顺序添加的,它们都出现在生成的清单中,但似乎Gradle的OSGi插件如果Import-Package手动指定则不会添加自动检测到的参数.

TL; DR:

  • 如果我不手动指定Import-Package指令,它将自动生成所有编译时依赖项,但不是运行时依赖项.
  • 如果我这样做manifest { instruction 'Import-Package', 'org.springframework.orm' },那么编译时依赖关系不会自动包含在内.

如何告诉Gradle我的运行时依赖项,以便将它们添加到Import-Package

osgi gradle bnd

6
推荐指数
1
解决办法
3376
查看次数

标签 统计

bnd ×1

gradle ×1

osgi ×1