网站首页 > java教程 正文
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 文件过大,需谨慎处理依赖冲突。
猜你喜欢
- 2025-09-13 如何将 Spring Boot 应用打包部署为容器镜像,避免环境异常无法部署
- 2025-09-13 SpringBoot动态加载外部Jar:解锁插件化架构的实战指南
- 2025-09-13 SpringBoot构建Jar包实现依赖包分离
- 2025-09-13 Python 打包为 Android 的 APK 文件,环境配置技术要点
- 2025-09-13 Maven打包的时候排除指定的资源、目录、文件和程序类的方法
- 2025-09-13 Spring Boot JAR 包资源访问踩坑:cannot be resolved to absolute file
- 2025-09-13 SpringBoot加载外部Jar实现功能按需扩展
- 2025-09-13 Spring Boot3 全栈打包指南:一键搞定应用、数据库与 Redis 镜像部署
- 2025-09-13 「项目部署」使用Jenkins一键打包部署SpringBoot应用
- 2025-09-13 Spring Boot打包成JAR后,内置Tomcat你真的懂吗?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)