我正在尝试使用Ant bndwrap
任务将非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信息的罐子上运行。
是否有某种方法可以告诉BND忽略清单中的现有OSGi标头,或者已经完成OSGi的完整罐子?
答案 0 :(得分:0)
我会将非OSGi jar存储在一个单独的文件夹中,并修改fileset
以仅处理该文件夹。
答案 1 :(得分:0)
我注意到最近的bnd版本(例如2.1.0)现在在重新包装OSGi jar时尊重Bundle-SymbolicName。
答案 2 :(得分:-1)
只需更改您的文件集即可排除该jar