【问题标题】:How to build a distributable jar with Ant for a java project having external jar dependencies如何使用 Ant 为具有外部 jar 依赖项的 java 项目构建可分发的 jar
【发布时间】:2012-01-06 19:15:02
【问题描述】:

我在 Eclipse 中有一个 Java 项目,其类 MainClass 在包中有 main 方法:

com.nik.mypackage. 

该项目还引用了两个外部库,我将它们复制到 Eclipse 的 lib 文件夹中,然后使用 ADD JAR 函数添加到构建路径中。库是 one.jartwo.jar

这个库在eclipse的lib文件夹中,并添加到构建路径中。

我想使用 ant 脚本创建应用程序的可执行文件JAR。这样用户就可以使用命令访问我的应用程序:

c:>java -jar MyProject-20111126.jar

我知道 Eclipse 插件直接将 java 应用程序导出为可运行JAR。但是我想学习ant和构建过程,所以想手动创建build.xm。

【问题讨论】:

    标签: java ant build jar


    【解决方案1】:

    您的 build.xml 有两个选项。您可以解压缩库 jar,然后将其内容与为您的应用程序编译的代码捆绑在一起。或者,您可以将库 jar 放在文件系统上,并在 MyProject-2011126.jar 文件的清单文件中提供 ClassPath 条目。

    如果您在清单中设置类路径,请记住您提供的路径是相对于 MyProject-2011126.jar 的。

    【讨论】:

    • 如果我想将可分发的内容提供给其他机器上的其他用户怎么办。在那种情况下,清单文件中的 ClassPath 条目选项将如何工作?对于第一种情况,打开库 jar 并打包内容——ant 不能自动这样做吗???
    • 您可以在 ant 中执行 unjar/rejar,但没有库存任务可以执行此操作。您将使用 jar 任务。至于将罐子分开,它对其他用户来说可以正常工作。类路径与清单所在的 jar 文件相关。您可以使用 Surasuin 建议的结构,并且在 my.jar 清单中的类路径中放置 lib/onijar 和 lib/two.jar。
    【解决方案2】:

    另一种选择:

    您可以构建多个 jars(您的 jar + libs)+批处理文件,而不是只有一个 jar。

    所以,你构建的包可以是这样的结构:

      -/package/bin/app.bat
       /package/lib/my.jar
       /package/lib/one.jar
       /package/lib/two.jar
    

    在 app.bat 中,您的代码与您的代码相同

    java -jar MyProject-20111126.jar
    

    PS:如果你想开始学习构建工具,ANT 工具可能有点老了。我建议http://maven.apache.org/

    【讨论】:

      【解决方案3】:

      请尝试one-jar。它有助于重新分发打包为单个 jar 并附带 ant-task 的所有内容。见Easiest way to merge a release into one JAR file

      【讨论】:

      • 您能否在答案中包含有关 one-jar 的更多信息?
      猜你喜欢
      • 2015-04-21
      • 2016-12-13
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2015-02-01
      • 2013-11-11
      • 2014-12-27
      相关资源
      最近更新 更多