Java打包/构建常用技术Jar文件具体

标签 java ant build jar

我浏览了网站上所有常见的帖子,但我的问题略有不同:

打包一个包含许多其他 jar 文件作为依赖项的简单 Java 应用程序的最佳做法是什么?

例如:我有 foo.java,里面有一个 main,还有 foo1.java、foo2.java,它们是从 foo.java 访问的。我在 eclipse 构建路径上使用 log4j.jar、mysql.jar。

现在我正在使用 ant,它可以很好地构建它。我所做的是编写一个引用所有类路径和 log4j 信息的简单 .sh 脚本。但这意味着我必须给他们所有那些 jar ,而且他们必须在正确的位置。我希望能够说“java -jar foo.jar”并让它在任何机器上运行而无需传输任何其他文件。

也许 .jar 不是最好的方式。我只想能够将一个文件提供给不知道如何设置类路径和所有内容的人,并让它能够运行。

我也很好奇最佳实践是什么。您通常只是给某人一个 jar 并给他们一个包含所有依赖项 jar 的 zip,然后告诉他们将其放在类路径中吗?

您是否制作了 .rpm?

我不熟悉 MAVEN,但如果那是最好的方法,我会做一个教程。现在我使用 ant。

最佳答案

就我个人而言,我不喜欢像这样将所有依赖项转储到单个 jar 文件中。这使得查看二进制分布的人很难弄清楚程序真正依赖什么。

我更喜欢用我的 jar 及其所有依赖项创建一个 lib 目录。在 manifest.mf 中使用 Class-Path: 指定类路径。在 list 中使用 Main-Class: 指定主类。然后使用 java -jar my.jar 运行应用程序。您只需要将您的类及其所有依赖项打包到 zip 或 tar 中即可。

Maven 确实有一项任务是自动创建 list ,还有一项任务是自动创建存档。但是,对于具有单个工件和很少更改的第 3 方库的简单项目,很容易在 ant 脚本中构建。

关于Java打包/构建常用技术Jar文件具体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5424761/

相关文章:

java - 如何在android中的imageview上添加这个效果

java - 使用 ant 脚本为我的所有项目自动增加 ivy 修订版

java - 在交付单个 jar 并使用反射时,如何避免在命令行中指定完全限定的类名?

gwt - ant gwt 编译器任务失败

c - 使用 CMake 获取链接错误

java - Spring Data JPA 不适用于 CascaseType.PERSIST 和 @OneToOne

java - @annotation 周围的方面不起作用

java - 使用 lambda 根据索引或最后一个数组值修改对 Java Stream 进行过滤

ios - iTunes Connect 试飞公链有效性

java - 如何在通常的 Maven clean 阶段之外删除项目文件夹