BND Ant任务-包装非OSGi JAR
我试图使用AntBND Ant任务-包装非OSGi JAR,ant,osgi,bnd,Ant,Osgi,Bnd,我试图使用Antbndwraptask将非OSGi JAR包装到目录中。我的当前Ant配置是: <target name="wrap-jars" description="Wrap non-OSGi jars"> <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${biz.aQute:bnd:jar}"/> <bndwrap output="${dist.dir}/app
bndwrap
task将非OSGi JAR包装到目录中。我的当前Ant配置是:
<target name="wrap-jars" description="Wrap non-OSGi jars">
<taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${biz.aQute:bnd:jar}"/>
<bndwrap output="${dist.dir}/app-modules">
<fileset dir="${dist.dir}/app-modules" includes="*.jar" />
</bndwrap>
<move overwrite="true" todir="${dist.dir}/app-modules" >
<fileset dir="${dist.dir}/app-modules" includes="*.bar" />
<mapper type="glob" from="*.bar" to="*.jar" />
</move>
</target>
这很好,但问题是它还包装了现有的OSGi jar,这会导致问题。例如,我注意到它将Bundle SymbolicName
头更改为一些默认值。它可能会改变一些我不想要的东西。我只想让它在没有OSGi信息的JAR上运行
有没有什么方法可以告诉BND忽略清单中现有的OSGi头,或者是已经OSGi化的完整JAR?我会将非OSGi JAR存储在一个单独的文件夹中,并修改
文件集以仅处理该文件夹。我注意到最近的BND版本(例如,2.1.0)现在,在重新包装OSGi jar时,请尊重Bundle SymbolicName。只需更改文件集以排除该jar即可嗯,这是一个想法,但这会使另一方面的事情复杂化。在我的项目中,打包是自动完成的,我无法区分JAR是否符合OSGi。我想用BND定义文件,但我不知道怎么做。也许你可以修改BND的源代码并使用自定义的BND fork。Ant任务通常不太复杂。我实际上从Maven调用了这个任务,所以我宁愿使用stock BND。但是,我可能能够从任务源代码中找到一些东西。嗨!欢迎来到堆栈溢出。这个答案有点稀疏——你能用一个例子或者解释一下这个答案是如何回答OP的问题的吗?谢谢