【问题标题】:BND Ant task - wrap non-OSGi jarsBND Ant 任务 - 包装非 OSGi jar
【发布时间】:2011-12-31 10:04:55
【问题描述】:

我正在尝试使用 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-fied 的 jars?

【问题讨论】:

    标签: ant osgi bnd


    【解决方案1】:

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

    【讨论】:

    • 嗨!欢迎来到堆栈溢出。这个答案有点稀疏-您能否通过示例或解释来进一步详细说明这如何回答 OP 的问题?谢谢!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 嗯,这是一个想法,但它会使另一个方面的事情复杂化。在我的项目中,打包是自动完成的,我无法区分 jar 是否符合 OSGi。我正在考虑使用 BND 定义文件,但我不知道该怎么做。
      • 也许您可以修改 bnd 的源代码并使用自定义 bnd fork。 Ant 任务通常不会太复杂。
      • 我实际上是从 Maven 调用这个任务,所以我宁愿使用股票 BND。但是,我也许可以从任务源代码中找出一些东西。
      猜你喜欢
      • 2010-10-20
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多