BND Ant任务 - 包装非OSGi jar

时间:2011-11-17 14:37:50

标签: ant osgi bnd

我正在尝试使用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的完整罐子?

3 个答案:

答案 0 :(得分:0)

我会将非OSGi jar存储在一个单独的文件夹中,并修改fileset以仅处理该文件夹。

答案 1 :(得分:0)

我注意到最近的bnd版本(例如2.1.0)现在在重新包装OSGi jar时尊重Bundle-SymbolicName。

答案 2 :(得分:-1)

只需更改您的文件集即可排除该jar