我有一个用 Maven 制作的项目。我用“mvn package”编译了一个 JAR,现在我想运行它,最好不要设置一些疯狂的类路径,因为它依赖于 Spring 和一半的互联网或其他东西。有什么方法可以让我轻松运行它吗?像“mvn run”这样的东西会很棒,或者将所有依赖项放入 jar 中以便我可以执行“java -jar”的选项也很棒。
你如何处理这个问题,你建议做什么?因为基于 ~/.m2 导出 CLASSPATH 可能会很有害 ;-)
无论如何设置CLASSPATH
和调用java -jar myjar.jar
都不起作用。因为该java -jar
命令忽略了CLASSPATH
环境变量以及-cp
标志。
在这种情况下,您必须将类路径条目添加到 jar 的 MANIFEST 中Class-Path
,例如:
Class-Path: jar1-name jar2-name directory-name/jar3-name
使用Maven 程序集插件- 它会自动构建您的 JAR 与所有包含的依赖项,并且您可以设置主类参数以使 JAR 可执行。
文档可能会令人困惑,因此这里是您的 POM 的示例:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>package.of.my.MainClass</mainClass>
<packageName>package.of.my</packageName>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
然后你可以运行为:
mvn assembly:assembly
您将需要查看Maven Assembly Plugin。然后,一旦您创建了插件所需的 XML 文件并修改了您的 POM 文件以使用该插件,您可以使用以下命令运行它:
mvn assembly:assembly
这将创建包含所有依赖项的 JAR。