我想创建一些依赖于其他(第三方) jars的包(这是否是一个好的实践是另一个主题)
我能够使用gradle生成一个胖jar (它有所有依赖的jar)和osgi清单。
我的项目布局在创建jar后的lib/文件夹中存储jar,第三方jar(例如ibm.jar)位于jar的根部。
我的分级任务是使用osgi插件和一些基本的osgi指令,我只手动指定导出包作为我的程序的包,而不是其他3个jars
但是,当我试图安装该包时,它会显示错误。
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)Gradle
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/'我试着解释,把它们放在类路径中,但问题依然存在。
Bundle-ClassPath: '.,*.jar' 我可以看到我需要的包(com.ibm.mq)在Import中:对吗?
我的问题是:正确的清单应该是什么?gradle (基于BND)能够理解依赖关系并自动创建清单吗?如果是,那么所需的设置是什么?
编辑:使用像这样的gradle函数,我得到了相同的错误(我也检查了清单中出现的包类路径)
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"""发布于 2012-10-29 08:11:42
Bnd不对目录或文件使用通配卡(理由充分)。如果需要对文件进行通配符展开,请使用${lsa;(dir);(match)}宏。详情见www.aqute.biz/Bnd。
https://stackoverflow.com/questions/13110696
复制相似问题