Ant BND 任务不会生成包含任何项目的包

发布于 2024-11-29 04:15:34 字数 2315 浏览 0 评论 0原文

将 Maven 项目转换为 ant 项目后,我在生成捆绑包时遇到问题。 bnd ant 任务创建 test.jar 但该文件仅包含 META-INF。 Eclipse 项目名为 testproj。我缺少什么?另外,有人知道哪里有更多 bnd ant 任务示例吗? bnd 站点本身在这方面有点缺乏,特别是在如何构建类路径值方面。

<project name="testproj" basedir="." default="build">

<patternset id="project.deploy.jars">
    <include name="slf4j-api-1.6.1.jar" />
    <include name="logback-core-0.9.28.jar" />
    <include name="logback-classic-0.9.28.jar" />
    <include name="org.osgi.compendium-4.2.0.jar" />
    <include name="org.apache.felix.http.jetty-2.2.0.jar" />
    <include name="jcl-over-slf4j-1.6.1.jar" />
    <include name="mail-1.4.4-1.0.0.jar" />
    <include name="commons-io-2.0.1.jar" />
    <include name="commons-lang-2.6.jar" />
    <include name="commons-codec-1.5.jar" />
    <include name="commons-httpclient-3.1-osgi-1.0.0.jar" />
    <include name="bndlib-1.43.0.jar" />
    <include name="ojdbc5-osgi-1.0.0.jar" />
    <include name="joda-time-1.6.2.jar" />
    <include name="cxf-dosgi-ri-singlebundle-distribution-1.2.jar" />
</patternset>

<path id="bnd.classpath">
    <fileset dir="setup/external">
        <patternset refid="project.deploy.jars" />
    </fileset>
</path>

<target name="build" description="Build the bundle">

    <taskdef resource="aQute/bnd/ant/taskdef.properties"
        classpath="setup/dev/biz.aQute.bnd.jar"
        />

    <pathconvert property="bnd.classpath.string" pathsep=",">
        <path refid="bnd.classpath" />
        <mapper>
            <chainedmapper>
              <flattenmapper/>
              <regexpmapper from="(.*)" to="setup/external/\1" casesensitive="no"/>
            </chainedmapper>
        </mapper>
    </pathconvert>

    <echo>${bnd.classpath.string}</echo>

    <bnd 
      classpath="target/classes,${bnd.classpath.string}"
      eclipse="true" 
      failok="false" 
      exceptions="true" 
      output="test.jar"
      files="test.bnd"/>

</target>

</project>

test.bnd:
Import-Package:com.test.service, oracle.sql, oracle.jdbc, oracle.jdbc.driver, *
Export-Package:com.test.service
Service-Component:com.test.*

I'm having trouble producing a bundle after converting a maven project to an ant project. The bnd ant task creates test.jar but the file only includes a META-INF. The eclipse project is named testproj. What am I missing? Also, does anyone know of a place with more bnd ant task examples? The bnd site itself is a little lacking in this regard, especially with how to build the classpath values.

<project name="testproj" basedir="." default="build">

<patternset id="project.deploy.jars">
    <include name="slf4j-api-1.6.1.jar" />
    <include name="logback-core-0.9.28.jar" />
    <include name="logback-classic-0.9.28.jar" />
    <include name="org.osgi.compendium-4.2.0.jar" />
    <include name="org.apache.felix.http.jetty-2.2.0.jar" />
    <include name="jcl-over-slf4j-1.6.1.jar" />
    <include name="mail-1.4.4-1.0.0.jar" />
    <include name="commons-io-2.0.1.jar" />
    <include name="commons-lang-2.6.jar" />
    <include name="commons-codec-1.5.jar" />
    <include name="commons-httpclient-3.1-osgi-1.0.0.jar" />
    <include name="bndlib-1.43.0.jar" />
    <include name="ojdbc5-osgi-1.0.0.jar" />
    <include name="joda-time-1.6.2.jar" />
    <include name="cxf-dosgi-ri-singlebundle-distribution-1.2.jar" />
</patternset>

<path id="bnd.classpath">
    <fileset dir="setup/external">
        <patternset refid="project.deploy.jars" />
    </fileset>
</path>

<target name="build" description="Build the bundle">

    <taskdef resource="aQute/bnd/ant/taskdef.properties"
        classpath="setup/dev/biz.aQute.bnd.jar"
        />

    <pathconvert property="bnd.classpath.string" pathsep=",">
        <path refid="bnd.classpath" />
        <mapper>
            <chainedmapper>
              <flattenmapper/>
              <regexpmapper from="(.*)" to="setup/external/\1" casesensitive="no"/>
            </chainedmapper>
        </mapper>
    </pathconvert>

    <echo>${bnd.classpath.string}</echo>

    <bnd 
      classpath="target/classes,${bnd.classpath.string}"
      eclipse="true" 
      failok="false" 
      exceptions="true" 
      output="test.jar"
      files="test.bnd"/>

</target>

</project>

test.bnd:
Import-Package:com.test.service, oracle.sql, oracle.jdbc, oracle.jdbc.driver, *
Export-Package:com.test.service
Service-Component:com.test.*

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦行七里 2024-12-06 04:15:34

1)你看过bndtools中包含的ant支持吗? Neil 和我竭尽全力让 bndtools 在离线模式下运行。
2)build.xml看起来不正确的ant语法?你能做一个小例子并发布正确的文件吗?
3) bnd 永远不应该生成没有 MANIFEST.MF 文件的 jar。运行有错误吗?

如果您无法解决问题,请随时向我发送包含设置的 zip 文件,我将检查发生了什么(并在此处报告)。

1) Did you look at the ant support included in bndtools? Neil and I go out of our way to make bndtools run in offline mode.
2) The build.xml looks not proper ant syntax? Can you make a small example and post the proper files?
3) bnd should never generate a jar without a MANIFEST.MF file. Does the run have an error?

If you can't solve the problem feel free to send me a zip file with the setup and I'll check what's going on (and report here).

不羁少年 2024-12-06 04:15:34

在 Google Groups bndtools(bndtools 和 bnd 的组)的帮助下,问题显然是 .bnd 文件不包含 Private-Package 标头。它用于指定实现包,因此将其作为您想要引入的所有类的基础包。

添加后,所有类都显示出来,并且组件 xml 再次出现。

感谢大家的帮助!

Following help from the group at Google Groups bndtools (which is a group for for both bndtools and bnd), the issue is apparently that the .bnd file does not contain the Private-Package header. This is used to specify the implementation package so make it a base package for all the classes you want brought in.

After I added it, all the classes showed up and the component xml appeared again.

Thanks for your help everyone!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文