Maven 打 JAR 包
分离依赖
使用 Maven Jar Plugin 插件,可以将项目自身单独打成一个 JAR,依赖的 JAR 放置到指定目录。
在项目的 pom.xml 中添加如下配置:
<!-- project > build > plugins -->
<plugin>
<!-- Maven Jar Plugin(构建 JAR 包) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix> <!-- 如果 addClasspath 为 true,则这里填写 classpath 的目录前缀 -->
<mainClass>com.example.App</mainClass> <!-- 主类名 -->
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<!-- Maven Dependency Plugin(拷贝依赖) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory> <!-- 依赖输出目录,必须和 classpathPrefix 对应 -->
</configuration>
</execution>
</executions>
</plugin>
运行如下命令进行打包:
mvn clean package
输出结构(有省略):
target
├── lib
│ ├── dependency-1.jar
│ ├── dependency-2.jar
│ └── dependency-3.jar
└── demo-1.0.jar
其中 demo-1.0.jar 是项目的 JAR,lib 目录包含依赖的 JAR。
使用方法:
java -jar demo-1.0.jar
使用时,lib 目录和构建产物 demo-1.0.jar 必须位于同一目录。
合并依赖
使用 Maven Shade Plugin,可以将项目及其依赖打包到单个 JAR 文件中(fat JAR)。
在项目的 pom.xml 中添加如下配置:
<!-- project > build > plugins -->
<plugin>
<!-- Maven Shade Plugin(将项目输出合并到单个 JAR 包) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.App</mainClass> <!-- 主类名 -->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
运行如下命令进行打包:
mvn clean package
输出结构(有省略):
target
├── demo-1.0-jar-with-dependencies.jar
└── demo-1.0.jar
其中 demo-1.0.jar 是不带依赖的 JAR 包,demo-1.0-jar-with-dependencies.jar 是带依赖的 JAR 包。
使用方法:
java -jar demo-1.0-jar-with-dependencies.jar

浙公网安备 33010602011771号