apply plugin: 'java' apply plugin: 'osgi' jar { baseName = 'awesome' manifest { name = 'An Awesome Application' symbolicName = 'com.example.awesome' // instruction 'Import-Package','org.springframework.orm' } }
使用上面的代码,Gradle会检测我的依赖项并添加一个包含所有编译时依赖项的Import-Package.但是说我的应用程序也对org.springframework.orm有运行时依赖性,我如何告诉Gradle将它作为参数包含在Import-Package中?
如果上面的注释行未注释,则生成的Import-Package指令仅指定org.springframework.orm.自the Gradle documentation for OsgiManifest州以来,这让我感到困惑
OsgiManifest instruction(String name,String... values)
Adds arguments to an instruction. If the instruction does not exists,
it is created. If it does exists,the arguments are appended to the
existing arguments.
但是,这似乎不适用于自动检测到的Import-Package参数.如果我指定’Import-Package’,’my.dependency.1’等指令,并在其间打印jar.manifest.instructions,我可以看到它们是如何按顺序添加的,它们都出现在生成的清单中,但是,如果手动指定了Import-Package,Gradle的OSGi插件似乎不会添加自动检测到的参数.
TL; DR:
>如果我不手动指定Import-Package指令,它将自动生成所有编译时依赖项,但不是运行时依赖项.
>如果我确实显示{指令’Import-Package’,’org.springframework.orm’},则不会自动包含编译时依赖项.
如何告诉Gradle我的运行时依赖项,以便将它们添加到Import-Package中?