1. 准备 spring boot 项目简单,略过 spring boot 版本 > 2.3.x 即可 简单写了一个 hello world 
2. 进行相关配置这里网上很多 blog 都强调了要去 pom.xml 里手动配置启用分层打包: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--开启分层编译支持--> <layers> <enabled>true</enabled> </layers> </configuration> </plugin> </plugins></build> 2.3.x版本的时候因为是新功能需要手动配置开启。但是目前 spring boot 版本(使用版本2.6.1)实测不需要手动配置,默认支持该特性。(根据一些 blog 的说法是 2.4.x 版本之后就默认开启了) 目前的官方文档(2.6.0版本)的说法也是默认支持,反而不需要该特性时才需要手动配置: The repackaged archive includes the layers.idx file by default. To disable this feature, you can do so in the following manner: <project> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layers> <enabled>false</enabled> </layers> </configuration> </plugin> </plugins> </build></project>
3. package执行 mvn package 进行打包,得到 jar 包文件。 
其实实际上本质是使用了 spring-boot-maven 插件的 repackage,得到了完整的包含依赖的 jar 包和原始的 jar 包(自动添加后缀 .original) 打开 jar 包,会发现在 BOOT-INF 文件夹下有 classpath.idx 和 layers.idx 文件,打开看下: classpath.idx - "BOOT-INF/lib/logback-classic-1.2.7.jar" - "BOOT-INF/lib/logback-core-1.2.7.jar" - "BOOT-INF/lib/log4j-to-slf4j-2.14.1.jar" - "BOOT-INF/lib/log4j-api-2.14.1.jar" - "BOOT-INF/lib/jul-to-slf4j-1.7.32.jar" - "BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar" - "BOOT-INF/lib/snakeyaml-1.29.jar" - "BOOT-INF/lib/jackson-databind-2.13.0.jar" - "BOOT-INF/lib/jackson-annotations-2.13.0.jar" - "BOOT-INF/lib/jackson-core-2.13.0.jar" - "BOOT-INF/lib/jackson-datatype-jdk8-2.13.0.jar" - "BOOT-INF/lib/jackson-datatype-jsr310-2.13.0.jar" - "BOOT-INF/lib/jackson-module-parameter-names-2.13.0.jar" - "BOOT-INF/lib/tomcat-embed-core-9.0.55.jar" - "BOOT-INF/lib/tomcat-embed-el-9.0.55.jar" - "BOOT-INF/lib/tomcat-embed-websocket-9.0.55.jar" - "BOOT-INF/lib/spring-web-5.3.13.jar" - "BOOT-INF/lib/spring-beans-5.3.13.jar" - "BOOT-INF/lib/spring-webmvc-5.3.13.jar" - "BOOT-INF/lib/spring-aop-5.3.13.jar" - "BOOT-INF/lib/spring-context-5.3.13.jar" - "BOOT-INF/lib/spring-expression-5.3.13.jar" - "BOOT-INF/lib/spring-boot-2.6.1.jar" - "BOOT-INF/lib/spring-boot-autoconfigure-2.6.1.jar" - "BOOT-INF/lib/slf4j-api-1.7.32.jar" - "BOOT-INF/lib/spring-core-5.3.13.jar" - "BOOT-INF/lib/spring-jcl-5.3.13.jar" - "BOOT-INF/lib/spring-boot-jarmode-layertools-2.6.1.jar"
layers.idx - "dependencies": 下载地址: linux中grub启动引导程序的加密介绍 Linux系统的修复模式(单用户模式)
|