【问题标题】:Maven: How to generate a standalone application?Maven:如何生成一个独立的应用程序?
【发布时间】:2012-02-23 15:08:30
【问题描述】:

我正在使用 Maven 来管理控制台应用程序项目。在我的机器上,我输入mvn exec:java,Maven 会处理所有事情。然而,我想要的是在没有 Maven 帮助的情况下在不同的机器上执行相同的应用程序。

在 NetBeans 中,Ant 项目有一个 dist 目录,其中包含所有必要的文件。您所要做的就是输入java -jar dist/App.jar。如何让 Maven 生成这样的可分发目录或存档?

PS:虽然看起来相关,但这不是 Create a standalone application with Maven 的重复。

【问题讨论】:

  • 嗯,事实上,它与您所指的问题完全相同。
  • @gizmo 问题可能相似,但我寻求的答案却大不相同。

标签: java maven ant distribute


【解决方案1】:

我在maven里用过。

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/

Application Assembler Plugin 是一个 Maven 插件,用于生成用于启动 java 应用程序的脚本。项目本身的所有依赖项和工件都放置在已定义的 assemble 目录中生成的 Maven 存储库中。所有工件(依赖项 + 项目中的工件)都添加到生成的 bin 脚本中的类路径中。

http://maven.apache.org/plugins/maven-assembly-plugin/

用于 Maven 的程序集插件主要用于允许用户将项目输出及其依赖项、模块、站点文档和其他文件聚合到一个可分发的存档中。

【讨论】:

  • @khmarbaise 出于兴趣,您更喜欢第一个还是第二个?我在不同的情况下都使用过。
  • 我试过maven-assembly-plugin(似乎更正式),它成功了!不过,构建该 jar 文件需要一些时间。
  • @Peter Lawrey 第一个(appassembler-plugin)...关于“maven-assembly”更官方的说法是什么?
  • @khmarbaise 它由 apache.org 托管...这是我首先尝试的唯一原因。
  • @Eser Aygün 你知道 codehaus 上的插件列表吗? (mojo.codehaus.org/plugins.html)...
【解决方案2】:

您可以使用 maven-jar-plugin 构建可执行的 jar 文件;有关他们的示例页面的更多信息:http://maven.apache.org/shared/maven-archiver/examples/classpath.html

这将简单地创建一个可以通过 java -jar 执行的一体化 jar

【讨论】:

  • 我已经使用了maven-jar-plugin,但生成的 jar 似乎不是“一体式”。当我执行它时,我得到NoClassDefFoundErrors。我错过了什么吗?
  • 在默认范围内定义的任何依赖项都应该重新打包到您的 jar 中。如果您对提供的范围有依赖关系,则不会包含它们(因为假定它们是在执行环境中提供的,例如要在 TomCat EE 环境中部署的 EE 项目中的 EE-jars)。
  • 我也是这么想的,我又给了它一次机会,但没有运气。我正在使用 twitter4j 库。 Maven 下载并安装它没有问题。但是java -jar不知怎么在目标jar文件中找不到twitter4j.StatusListener类。
  • 不幸的是,Eser 是正确的。我已经能够重现问题。如果您破解打开 jar 文件并将其与有效的 jar 文件进行比较,则缺少 boot-inf 文件夹。不知道如何纠正。
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 2017-09-30
  • 2012-05-18
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多