2012-02-23 40 views
1

我正在使用Maven来管理控制台应用程序项目。在我的机器上,我输入mvn exec:java,Maven处理所有内容。然而,我想要的是在没有Maven帮助的情况下在另一台机器上执行相同的应用程序。Maven:如何生成独立应用程序?

在NetBeans中,Ant项目的dist目录包含所有必需的文件。您只需键入java -jar dist/App.jar即可。我如何让Maven生成这样的可分发目录或存档?

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

+0

好吧,其实,这是你的问题的精确副本指向。 – gizmo 2012-02-23 15:12:53

+0

@ gizmo _这个问题可能是相似的,但是我所寻找的答案是相当不同的。 – 2012-02-23 15:57:59

回答

4

我已经在maven中使用过。

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

应用程序组装插件是一个Maven插件用于生成脚本用于启动Java应用程序。项目本身的所有依赖项和工件都放置在定义的汇编目录中生成的Maven仓库中。所有工件(依赖项+工程中的工件)都会添加到生成的bin脚本中的类路径中。

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

大会插件的Maven的主要目的是允许用户使用它的依赖,模块,网站文档和其他文件一起聚集项目输出到单个分发归档。

+0

这是在Maven中这样做的正确方法。 – khmarbaise 2012-02-23 15:24:56

+0

@khmarbaise出于兴趣,你喜欢第一还是第二?我已经在不同的环境中使用过。 – 2012-02-23 15:40:37

+0

我试过'maven-assembly-plugin'(看起来更官方),它的工作!但花了一些时间来构建该jar文件。 – 2012-02-23 15:55:49

1

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

这将简单地创建一个全功能于一身的罐子,可以通过Java执行的罐子

+0

我已经使用'maven-jar-plugin',但生成的jar似乎不是“一体化”。当我执行它时,我得到'NoClassDefFoundError's。我想念什么? – 2012-02-23 15:20:50

+0

在默认范围内定义的任何依赖项都应该重新打包到jar中。如果您对提供的范围有依赖关系,则不会包含它们(因为它们被假定为在执行环境中提供,例如要部署在TomCat EE env中的EE项目中的EE-jar)。 – Yhn 2012-02-23 15:24:16

+0

我也这么认为,我给了它另一个机会,但没有运气。我正在使用twitter4j库。 Maven下载并安装它没有问题。但'java -jar'无法在目标jar文件中找到'twitter4j.StatusListener'类。 – 2012-02-23 15:48:12