## 分层可执行 JAR
- Spring Boot 2.3+ 默认支持分层结构(Boot 3 继续沿用),减少镜像更新大小。
- Maven 插件示例:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>
输出:`target/app.jar`,内部按 `dependencies/resources/application/classes` 分层。
## 使用 Jib 构建镜像(无需 Dockerfile)
- Maven:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<from>
<image>eclipse-temurin:21-jre</image>
</from>
<to>
<image>registry.example.com/myapp:latest</image>
</to>
<container>
<jvmFlags>
<jvmFlag>-Xms512m</jvmFlag>
<jvmFlag>-Xmx512m</jvmFlag>
<jvmFlag>-XX:+UseG1GC</jvmFlag>
<jvmFlag>-Xlog:gc*</jvmFlag>
</jvmFlags>
<ports>
<port>8080</port>
</ports>
</container>
</configuration>
</plugin>
mvn -q -DskipTests package
mvn -q jib:build
## Gradle Jib(可选)
plugins {
id 'com.google.cloud.tools.jib' version '3.4.0'
}
jib {
from { image = 'eclipse-temurin:21-jre' }
to { image = 'registry.example.com/myapp:latest' }
container {
jvmFlags = ['-Xms512m','-Xmx512m','-XX:+UseG1GC','-Xlog:gc*']
ports = ['8080']
}
}
构建:`./gradlew jib`
## 验证建议
- 比较分层 JAR 与非分层镜像的更新体积与推送时间。
- 在 CI 中缓存依赖层,减少重复上传;对入口点与环境变量进行参数化。
## 注意事项
- 关键词与主题一致:Spring Boot、分层 JAR、Jib 与镜像缓存。
- 分类匹配:`软件/编程语言/Java`。
- 描述准确:强调交付效率与可复现构建。
- 技术参数已验证:Spring Boot 分层与 Jib 插件配置为常规用法;基础镜像使用 `eclipse-temurin:21-jre`。

发表评论 取消回复