1
親愛的StackOverflow用戶如何避免搖籃的OSGi插件生成的私人包和導入包進入出口pacakge進入嵌入式依賴
我有一個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}"/
}
}
是否有可能以更清潔的方式完成此操作?我主要是想避免兩兩件事:具有手動編寫具有嵌入式依賴(GSON)的內容手動複製到我的罐子的進口和出口包裝項目
我認爲bnd(底層的osgi插件)可以爲我做到這一點,但迄今爲止我嘗試過的(即使我將它們添加爲私有包)bnd仍然導出所有內容並導入gson包以及它不會添加gson類到罐子
就你而言,你可能應該看看非工作區構建的Bnd Gradle插件:biz.aQute.bnd.builder。 https://github.com/bndtools/bnd/tree/master/biz.aQute.bnd.gradle#gradle-plugin-for-non-workspace-builds –