亲爱的StackOverflow用户
我有一个gradle项目,我希望将该工件转换为osgi包。在这个包中我有:
Export-Package
条目中)Import-Package
条目中)经过一些修修补补后,我提出了以下gradle.build
文件,该文件符合我的意图,但可能不是最干净的方式,利用bnd ...
group 'com.mycompany'
version '1.0.0'
apply plugin: 'java'
apply plugin: 'osgi'
repositories {
jcenter()
}
dependencies{
compile 'org.osgi:org.osgi.framework:1.8.0' //provided
compile 'com.google.code.gson:gson:2.8.0' //embedded
}
jar {
//embedding the gson dependency
from({
def x = configurations.compile.find({
return it.getName().contains('gson')
})
def tree = zipTree(x)
return tree
})
//explicitly building manifest entries
manifest {
instruction 'Bundle-Vendor',
'My Company'
instruction 'Bundle-Activator',
'com.mycompany.mybundle.Activator'
instruction 'Import-Package',
'!com.google.gson',
'*'
instruction 'Export-Package',
/com.mycompany.mybundle;version="${version}"/
}
}
是否有可能以更清洁的方式实现这一目标?我主要想避免两件事:
我认为bnd(osgi插件的底层)可以为我做这件事,但是到目前为止我已尝试过(即使我将它们添加为私有包)bnd仍然导出所有内容并导入gson包以及它赢了不要将gson类添加到jar