11

我正在尝试让一个 Maven 托管项目在命令行上运行。

我在 pom.xml 中有一组依赖项,这些依赖项随后被下载并安装在 ~/.m2/repository/ 中。我在我的 pom 中包含了必要的配置,以将类路径添加到 jar 清单中。

现在的问题是我正在尝试运行 jar:java -jar project-SNAPSHOT.jar。

Java 找不到下载的依赖项(我假设是因为它们在清单中没有列出路径?),但我不确定如何最好地运行它。

4

2 回答 2

7

选项 1:
创建的 jar 没有依赖的 jar 文件。因此,您需要告诉 java 所有依赖 jar 所在的类路径

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

选项 2:
更简单更好的解决方案是使用AppAssembler插件。它的作用是将您的 jar 打包在一个目录结构中,该目录结构包含

  1. 依赖罐子
  2. 创建的罐子
  3. shell/windows 脚本来执行它

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

选项 3:
如果您不想要所有的包袱,只想拥有一个jar-with-dependency 您可能想参考这里如何使用 Maven 创建具有依赖关系的可执行 JAR?

这将包含其中的所有依赖 jar。


编辑 1:对于选项 1,Brad M提到您可以使用依赖插件获取所有项目部门的列表。dependency:build-classpath

于 2012-10-05T15:18:06.747 回答
7
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime  

您可以在此处找到更多示例:从 Maven 运行 Java main 的 3 种方法

于 2012-10-05T15:27:56.957 回答