Maven 打包时生成 jar-with-dependencies.jar 文件通常与 Maven Shade Plugin 或 Maven Assembly Plugin 的配置有关。这些插件会创建一个包含项目自身代码及所有依赖项的 "胖 JAR"(Fat JAR),适用于需要独立运行的应用程序。
触发条件
当以下情况满足时,Maven 会生成 jar-with-dependencies.jar:
- 显式配置插件
在 pom.xml 中配置了 Shade 或 Assembly 插件,并指定了生成包含依赖的 JAR 文件。 - 执行特定 Maven 命令
运行 mvn package 或 mvn install 时,如果插件配置正确,会生成该文件。
典型配置示例
1. 使用 Maven Shade Plugin
在 pom.xml 中添加以下配置:
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</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.MainClass</mainClass> <!-- 指定主类 -->
</transformer>
</transformers>
<finalName>${project.artifactId}-with-dependencies</finalName> <!-- 生成的文件名 -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 使用 Maven Assembly Plugin
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.MainClass</mainClass> <!-- 指定主类 -->
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
执行命令
配置完成后,执行以下命令生成 jar-with-dependencies.jar:
bash
mvn clean package
生成的文件通常位于 target 目录下,命名为 项目名-with-dependencies.jar。
总结
- 默认行为:Maven 不会自动生成包含依赖的 JAR,需要手动配置插件。
- 适用场景:当项目需要作为独立应用运行(如 Java 程序、微服务)时,使用胖 JAR 更方便部署。
- 注意事项:包含所有依赖可能导致 JAR 文件过大,需谨慎处理依赖冲突。