Maven 打包
Maven 打包
标准JAR和Fat JAR打包
在 Maven 的默认打包方式中,生成的标准 JAR 文件仅包含当前模块编译后的代码(.class文件),不包含任何第三方依赖库。这种 JAR 适合作为普通库被其他项目引用,但由于缺少依赖,无法直接运行,且体积通常较小(KB 级)。而通过 Spring Boot Maven 插件(spring-boot-maven-plugin)重新打包生成的 Fat JAR(又称可执行 JAR),则会将模块自身代码、所有依赖的第三方库(打包在BOOT-INF/lib/下,如 Spring 框架、内嵌Web服务器 Tomcat)、以及 Spring Boot 启动器(org.springframework.boot.loader)全部嵌入到单个 JAR 中。这种 Fat JAR 体积较大(MB 级),但能通过 java -jar 直接运行,适合作为独立应用部署。两者本质区别在于:标准 JAR 是“轻量代码包”,需依赖外部环境;而 Fat JAR 是“自带完整运行环境的全家桶”,开箱即用。
Fat JAR打包目录
├─BOOT-INF // 存放应用程序的代码和依赖库
│ │
│ ├─classes // 存放当前项目的编译代码(.class)和资源文件(如 application.yml)
│ └─lib // 依赖的JAR包
│
├─META-INF // 存放元数据信息
│ │ MANIFEST.MF // 清单文件,定义启动类、类路径等信息
│ │ spring-devtools.properties //
│
└─org // 类加载器,负责加载BOOT-INF中的类和依赖
└─springframework
└─boot
└─loader
pom.xml文件配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.15</version>
<configuration>
<fork>true</fork> <!-- 启用独立进程运行应用,确保devtools热部署生效 -->
<!-- 不在生成artifactId.jar.original,而是生成artifactId-exec.jar -->
<classifier>exec</classifier>
</configuration>
<executions>
<execution>
<goals>
<!-- 重新打包成可执行的Spring Boot JAR (包含内嵌Tomcat和依赖库) -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>

浙公网安备 33010602011771号