2012-10-05 49 views
8

我试图让一个maven管理项目,在命令行上运行。如何运行Maven生成JAR的CLI

我有一组在pom.xml依赖随后将其下载并安装在〜/ .m2目录/库/的。我已将必要的配置包含在我的pom中,以便将类路径添加到jar清单。

现在的问题是我试图这样运行jar:Java的罐子项目SNAPSHOT.jar。

的Java找不到下载的依赖关系(我假设,因为他们没有在清单中列出的路径?),但我不知道如何以最佳方式得到这个运行。

回答

5

选项1:
创建没有依赖的jar文件的JAR。所以,你需要告诉Java的类路径,所有的依赖罐子

java -cp /lcoation/of/dependency1.jar:/location/of/dependency2.jar:/location/of/dependency3.jar -jar project-SNAPSHOT.jar 

选项2:
的更容易,更好的解决方案是使用AppAssembler插件。它的作用是在包含

  1. 依赖jar的目录结构封装的罐子
  2. 创建的罐子
  3. 壳/ Windows的脚本来执行它

看看这里http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

方案3:
如果你不希望所有的行李,只是想有一个jar-with-dependency 你可能想在这里提到How can I create an executable JAR with dependencies using Maven?

这将包含它内的所有依赖的罐子。


编辑1:对于选项1,Brad M提到,你可以使用dependency plugin所有项目的DEPS列表。 dependency:build-classpath

+0

啊你可以坚持下去。 – Nishant

+0

太棒了 - 这正是我所需要的。是否有任何警告与包装一切这样或一切都好。内存使用情况等? – Nick

+0

没有什么。它非常简单的东西,与1.制作jar相同,2.将依赖项复制到repo文件夹中,3.编写一个类似于以下内容的shell脚本:'java -jar ../myapp.jar Mainclass -cp ../repo/ * .jar' – Nishant

4
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime 

你可以在这里找到更多的例子:3 ways to run Java main from Maven

+0

使用maven 3.0.4 不适用于我['ERROR]未知的生命周期阶段“.mainClass = my.Main” –

相关问题