【问题标题】:Adding multiple jar files to class path of jar将多个jar文件添加到jar的类路径中
【发布时间】:2014-09-28 04:48:49
【问题描述】:

我正在使用 maven-antrun-plugin 对打包后的单个可部署工件执行几项操作。但是,我使用的包对它自己的插件的类路径做了几个假设,这些插件不在任何存储库中。我尝试将插件文件添加到 jar 中,但没有成功。我的下一步是让插件驻留在具有以下结构的 jar 文件旁边的文件夹中:

    .
    nutch2handler.jar
    plugins/
        plugin1/plugin1.jar
        plugin2/plugin2.jar
        plugin3/plugin3.jar
        etcetcetc

antrun 完成打包各种工件(jar、插件、www、shell 脚本等)后,出于与上述相同的原因,它会在 jar 的根目录中添加一些配置,这在这种情况下有效。我知道我可以创建一个属性来保存一个包含我想要添加到类路径的路径的字符串,但是我不想将所有这 20 多个插件都输入到该属性中,因为插件内容可能会有所不同。如何递归地将这些 jar 文件添加到该类路径?

我现在有

    <property name="jar.class.path" value="" />

在我的目标配置中,并想插入这样的东西

    <attribute name="Class-Path" value="${jar.class.path}"/>

在 jar 标签内。

【问题讨论】:

  • 正确理解:您生成的工件是一个罐子,包含其他罐子?
  • 我生成的工件是我自己的类,以及我项目的库依赖项。不幸的是,如上所述,插件没有存储库工件,所以我必须将它们添加到 jar 中(这似乎不适用于插件,但适用于配置。我认为这是因为插件是嵌套的在文件夹中),所以我相信合乎逻辑的下一步是确保将他们所有的 jar 添加到 jar 清单的类路径中
  • 您可以尝试将插件上传到您自己的 mvn 存储库。尝试您的本地存储库以检查该作品。
  • 我认为这会有所帮助 - stackoverflow.com/questions/858766/…

标签: java maven ant jar


【解决方案1】:

如果您的 nutch2handler.jar 和所有其他插件位于名为“lib”的文件夹中:

您可以定义如下内容,将所有递归 jar 添加到您的类路径中:

<path id="jar.class.path">
  <fileset dir="lib">
    <include name="**/*.jar" />
  </fileset>
</path>

然后您可以在必要时使用&lt;classpath refid="jar.class.path" /&gt; 来引用该属性。

【讨论】:

  • 只需稍作修改即可使用。不幸的是,这并没有解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 2012-04-22
  • 2021-04-22
  • 2018-11-07
相关资源
最近更新 更多