Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BND Ant任务-包装非OSGi JAR_Ant_Osgi_Bnd - Fatal编程技术网

BND Ant任务-包装非OSGi JAR

BND 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

我试图使用Ant
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的问题的吗?谢谢