使用 Maven 2 构建可运行的罐子
2022-08-31 12:08:33
我对Maven的咒语比较陌生,但我正在尝试用Maven构建一个命令行可运行的jar。我已经设置了我的依赖项,但是当我运行并尝试运行jar时,发生了两件事。首先,找不到主类,这是可纠正的。当我纠正这一点时,我在运行时收到错误,指出找不到类。mvn install
Maven 没有将我的依赖项库打包到 jar 中,因此我无法将 jar 作为独立应用程序运行。如何更正此问题?
我对Maven的咒语比较陌生,但我正在尝试用Maven构建一个命令行可运行的jar。我已经设置了我的依赖项,但是当我运行并尝试运行jar时,发生了两件事。首先,找不到主类,这是可纠正的。当我纠正这一点时,我在运行时收到错误,指出找不到类。mvn install
Maven 没有将我的依赖项库打包到 jar 中,因此我无法将 jar 作为独立应用程序运行。如何更正此问题?
执行此操作的最简单方法是使用 和 预定义的描述符创建程序集。您还需要为此uber jar生成一个带有主类条目的清单。下面的代码段显示了如何配置程序集插件以执行此操作:maven-assembly-plugin
jar-with-dependencies
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
然后,要生成程序集,只需运行:
mvn assembly:assembly
如果要将程序集作为构建的一部分生成,只需将 mojo 绑定到包阶段:assembly:single
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
只需运行:
mvn package
Maven 不会将依赖项打包到 jar 文件中,因为您通常不会使用 Java 程序执行此操作。
相反,您将依赖项与 jar 文件一起交付,并在清单的 Class-Path
标头中提及它们。
要走这条路,您需要为maven-jar-plugin
启用属性(在此处记录)。addClasspath
如果你真的想把所有的依赖关系都包含在你的jar文件中,那么你可以使用Maven Assembly插件来创建一个带有依赖关系的jar
。