## 分层可执行 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`。


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部