我正在尝试让一个 Maven 托管项目在命令行上运行。
我在 pom.xml 中有一组依赖项,这些依赖项随后被下载并安装在 ~/.m2/repository/ 中。我在我的 pom 中包含了必要的配置,以将类路径添加到 jar 清单中。
现在的问题是我正在尝试运行 jar:java -jar project-SNAPSHOT.jar。
Java 找不到下载的依赖项(我假设是因为它们在清单中没有列出路径?),但我不确定如何最好地运行它。
我正在尝试让一个 Maven 托管项目在命令行上运行。
我在 pom.xml 中有一组依赖项,这些依赖项随后被下载并安装在 ~/.m2/repository/ 中。我在我的 pom 中包含了必要的配置,以将类路径添加到 jar 清单中。
现在的问题是我正在尝试运行 jar:java -jar project-SNAPSHOT.jar。
Java 找不到下载的依赖项(我假设是因为它们在清单中没有列出路径?),但我不确定如何最好地运行它。
选项 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 打包在一个目录结构中,该目录结构包含
看看这里http://www.mojohaus.org/appassembler/appassembler-maven-plugin/
选项 3:
如果您不想要所有的包袱,只想拥有一个jar-with-dependency
您可能想参考这里如何使用 Maven 创建具有依赖关系的可执行 JAR?
这将包含其中的所有依赖 jar。
编辑 1:对于选项 1,Brad M提到您可以使用依赖插件获取所有项目部门的列表。dependency:build-classpath
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime
您可以在此处找到更多示例:从 Maven 运行 Java main 的 3 种方法。