Maven 项目打包可执行 JAR 文件
默认情况下,Maven 项目打包后只包含代码,不包含第三方依赖,所以无法直接运行,本文将介绍如何一起打包第三方依赖以及指定入口方法。
1. pom.xml 配置
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<mainClass>com.example.Main</mainClass>
<assemblyFinalName>example</assemblyFinalName>
</properties>
<build>
<plugins>
<!-- Maven Assembly Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>${assemblyFinalName}</finalName> <!-- 使用属性引用指定打包依赖后的JAR包名称 -->
<appendAssemblyId>false</appendAssemblyId> <!-- 禁止添加描述符 ID 的后缀 -->
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 配置介绍
- build.plugins.plugin.configuration.archive.manifest.mainClass: 指定 JAR 文件的入口方法;
- build.plugins.plugin.configuration.finalName: 指定打包后的 JAR 文件名称;
- build.plugins.plugin.configuration.appendAssemblyId: 指定打包后的 JAR 文件名称不携带 -jar-with-dependencies 后缀;
3. 打包
$ mvn clean package
参考文章: