我正在尝试使用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信息的jar上运行。
是否有办法告诉BND忽略清单中现有的OSGi头,或完成已经OSGi化的jar ?
我会将非osgi jar文件存储在一个单独的文件夹中,并修改fileset
以仅处理该文件夹
我注意到最近的bind版本(例如2.1.0)现在在重新包装OSGi jar时尊重Bundle-SymbolicName。
只需更改文件集以排除该jar