java - 组合多个 jar 的清洁方法?最好使用 Ant

标签 java ant jar

我对一些外部 jar 有运行时依赖项,我想将它们“重新压缩”到单个 jar 中。这些外部依赖项存储在 external_jars 目录中,我希望不必将它们全部列出(即,如果我的依赖项发生更改,则不需要更改我的构建脚本)。有什么想法吗?

Google 给了我一个关于如何做到这一点的好答案 - 如果您不介意将每个 jar 列为依赖项:

http://markmail.org/message/zijbwm46maxzzoo5

粗略地说,我想要一些类似于以下内容的东西,它将 lib 目录中的所有 jar 合并到 out.jar 中(带有一些理智的覆盖规则)。

jar -combine -out out.jar -in lib/*.jar

最佳答案

弗拉基米尔的回答是正确的,但我觉得他的建议意味着将所有 jar 重新包装在一个大的 out.jar 中,然后将其作为单个 <zipfileset> 提供给 Ant Jar 任务或类似的东西。这种两步法是不必要的。我不确定这是否与 Ant 版本有关,但我有 Ant 1.7.1 及其 <jar>任务理解<zipgroupfileset> ,它允许直接提供第三方 jars 的所有内容。

<jar destfile="MyApplication.jar">
  <zipgroupfileset dir="lib" includes="*.jar" /> 
  <!-- other options -->
  <manifest>
    <attribute name="Main-Class" value="Main.MainClass" />
  </manifest>
</jar>

关于java - 组合多个 jar 的清洁方法?最好使用 Ant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/515428/

相关文章:

java - 在 Java 编程语言中,哪种原始数据类型可用于保存货币或其他精确值?

java - -Djava.library.path=... 是否等同于 System.setProperty ("java.library.path", ...)

java - 输出在 Java 循环的开始和结束时出现偏差

unix - Ant 的递归 chmod 能否在速度上与 exec 竞争?

java - System.currentTimeMillis() 什么时候会溢出?

java - 当任何 JUnit 测试失败时,如何让构建失败?

Ant 检查一组文件是否存在

Java jar 不从 jar 中读取文件,只读取外部文件夹?

hadoop - 在hadoop中不运行reducer的情况下运行WordCount

java - 用户提示不会消失