【发布时间】:2020-06-09 17:13:23
【问题描述】:
Spring boot 2.3.0 具有分层的 fat jar,它们针对容器镜像构建进行了优化。现在,Spring 文档只讨论 Maven 构建工具,而不讨论 Gradle。
请问,我们需要对 Gradle 插件做些什么才能让它为 Spring Boot 构建一个“分层 jar”?
例如:如果使用 Gradle Spring 引导插件 id("org.springframework.boot") version "2.3.0.RELEASE" 创建的命令 java -Djarmode=layertools -jar app.jar extract 提取 jar,则会失败并显示消息:Unsupported jarmode 'layertools'。基本上,如果 jar 是使用 ./gradlew bootJar 构建的,那么分层 jar 默认情况下似乎是不活动的。
提取分层 jar 应该会产生以下目录,然后将这些目录复制到另一个容器映像中以执行,并且只有在较低层发生更改时,缓存系统才必须重新读取它们。使用-Djarmode=layertools 标志提取的分层 jar:
./dependencies/
./snapshot-dependencies/
./resources/
./application/
springSpring Blog 2.3.0.ML 的博客讨论了 Maven 构建工具和配置:
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>LAYERED_JAR</layout>
</configuration>
我们如何为 Gradle 插件启用相同的配置?
【问题讨论】:
-
用
java -Djarmode=layertools -jar build/libs/*.jar list检查Gradle分层JAR的内容...因为使用Gradle我得到一个spring-boot-loader文件夹...这似乎不是maven的情况...同样Gradle 插件的分层 Jar 中不存在resources文件夹。
标签: java spring spring-boot gradle jar