我正在尝试使用Ant bndwrap
任务将非OSGi罐子包装到目录中。这个我现在的Ant的配置是:BND Ant任务 - 包装非OSGi罐子
<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罐子,这会导致问题。例如,我注意到它将Bundle-SymbolicName
标题更改为某个默认值。它可能会改变别的东西,我不想要。我只希望它能够在没有OSGi信息的罐子上运行。
有什么方法可以告诉BND忽略清单中现有的OSGi头文件,或完整的已经OSGi-fied的jar文件吗?
嗯,这是一个想法,但它会在另一条战线的事情复杂化。在我的项目中,包装是自动完成的,我无法区分哪些罐子符合OSGi标准。我正在考虑使用BND定义文件,但我不知道如何去做。 – vdjurovic
也许你可以修改bnd的源代码并使用自定义的bnd分支。 Ant任务通常不会太复杂。 – palacsint
我实际上是从Maven调用这个任务,所以我宁愿使用股票BND。但是,我可能能够从任务源代码中找出一些东西。 – vdjurovic