我想创建一些依赖于其他(第三方)罐子的捆绑包
(这是一个好的做法是另一个话题)
我能够使用gradle生成一个胖罐(它有所有依赖的罐子)和osgi清单
我的项目布局存储在libs /文件夹中
制作罐子后,第三方罐子(例如ibm.jar)位于罐子的根部.
我将我的gradle任务是使用osgi插件和一些基本的osgi指令,我只手动指定导出包作为我的程序包,而不是其他3个罐子
但是,当我尝试安装该捆绑包时,它显示错误
Error starting file:****.jar (org.osgi.framework.BundleException: Unresol
ved constraint in bundle ***** [24]: Unable to resolve 24.0: missi
ng requirement [24.0] osgi.wiring.package; (osgi.wiring.package=com.ibm.mq))
org.osgi.framework.BundleException: Unresolved constraint in bundle **** [24]: Unable to resolve 24.0: missing requirement [24.0] osgi.wiring.package; (osgi.wiring.package=com.ibm.mq)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:382
6)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStart
LevelImpl.java:295)
at java.lang.Thread.run(Unknown Source)
摇篮
task makeJar(type: Jar) {
from { 'libs/'}
manifest = osgiManifest {
classesDir = sourceSets.main.output.classesDir
classpath = sourceSets.main.runtimeClasspath
instruction 'Export-Package','abc.def'
instruction 'Bundle-Vendor', 'ABC'
instruction 'Bundle-Activator', 'abc.def.Activator'
instruction 'Bundle-ClassPath', '.,*.jar'
instruction 'Include-Resource', '@**/*.jar'
}
}
我试过下面但它不会工作,似乎是gradle http://issues.gradle.org/browse/GRADLE-1107的问题
'Include-Resource', 'libs/'
我试图明确地在classpath中设置它们,但问题仍然存在
Bundle-ClassPath: '.,*.jar'
我可以看到我需要的包(com.ibm.mq)在Import-Package中:
那是对的吗?
我的问题是:
什么应该是正确的清单?
gradle(基于BND)是否可以理解依赖关系并自动创建清单,如果是这样,所需的设置是什么?
编辑:
像我这样的gradle insturction,我得到同样的错误
(我检查了捆绑类路径也出现在清单中)
instruction 'Bundle-ClassPath', """.,felix.jar,org.springframework.aop-3.0.5.RELEASE.jar,org.springframework.asm-3.0.5.RELEASE.jar,c3p0-0.9.1.2.jar,com.springsource.net.sf.cglib-2.2.0.jar,org.springframework.context-3.0.5.RELEASE.jar,org.springframework.transaction-3.0.5.RELEASE.jar,com.ibm.mqjms.jar,org.springframework.beans-3.0.5.RELEASE.jar,org.springframework.core-3.0.5.RELEASE.jar,commons-io-1.4.jar,org.springframework.expression-3.0.5.RELEASE.jar,ojdbc14.jar,org.springframework.jdbc-3.0.5.RELEASE.jar,connector.jar,commons-lang-2.4.jar,commons-logging.jar,com.ibm.mq.jar,log4j-1.2.15.jar,org.springframework.web-3.0.5.RELEASE.jar"""
最佳答案 Bnd不对目录或文件使用通配符(有充分理由).如果需要对文件进行通配符扩展,请使用${lsa;(dir);(match)}宏.有关详细信息,请访问www.aqute.biz/Bnd.