java - Spring分层Fat Jar和Gradle插件layertools jarmode

标签 java spring spring-boot gradle jar

Spring boot 2.3.0 具有针对容器镜像构建进行优化的分层 fat jar。现在,Spring 文档仅讨论 Maven 构建工具,而不讨论 Gradle。

请问,我们需要对 Gradle 插件做什么才能让它为 Spring Boot 构建“分层 jar”?

例如:如果使用命令 java -Djarmode=layertools -jar app.jar extract 提取一个由 Gradle Spring boot 插件制作的 jar id("org.springframework. boot”)版本“2.3.0.RELEASE” 失败并显示消息:不支持的 jarmode 'layertools'。基本上,如果 jar 是使用 ./gradlew bootJar 构建的,则默认情况下分层 jar 似乎未处于 Activity 状态。

提取分层 jar 应该会产生以下目录,然后将这些目录复制到另一个容器镜像中执行,并且只有当较低层发生更改时,缓存系统才必须重新读取它们。使用 -Djarmode=layertools 标志提取的分层 jar:

./dependencies/
./snapshot-dependencies/
./resources/
./application/

Spring 的博客Spring Blog 2.3.0.ML讨论 Maven 构建工具和配置:

<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
    <layout>LAYERED_JAR</layout>
</configuration>

我们如何为 Gradle 插件启用相同的配置?

最佳答案

该文档介绍了如何使用 spring-boot-gradle-plugin 为 Spring Boot 应用程序激活分层 fat jar。

详情请见Packaging Layered Jars with Gradle .

build.gradle文件中:

// Groovy solution
bootJar {
    layered()
}


// Kotlin solution
tasks.getByName<BootJar>("bootJar") {
    layered()
}

希望这有帮助。

关于java - Spring分层Fat Jar和Gradle插件layertools jarmode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288194/

相关文章:

java - 如何从高程栅格近似 vector 等高线?

java - 使用 MigLayout,为什么 JTable 后面的 JButton 无响应以及如何解决此问题?

android - 在 android 中处理 RestClient 调用的连接和读取超时

java - 如何在具有扩展另一个接口(interface)的接口(interface)的实现上设置限定符

java - 如何强制最近通话 Activity 在插入时显示联系人姓名

java - Spring Boot - 禁用验证日志

java - Spring Boot JPA 使用查询填充实体字段

javascript - 图像未插入到 Spring Boot 中

java - 使用 MockMvc 测试 spring 安全性时未调用自定义身份验证提供程序

java - LWUIT:如何使用 HTMLComponent 发布表单