首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Layered Fat Jar和Gradle插件layertools jarmode

Spring Layered Fat Jar和Gradle插件layertools jarmode
EN

Stack Overflow用户
提问于 2020-06-10 01:13:23
回答 2查看 4.2K关注 0票数 7

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

那么,我们需要对Gradle插件做些什么才能允许它为spring boot构建一个“分层jar”呢?

例如:如果使用Gradle Spring boot plugin 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:

代码语言:javascript
复制
./dependencies/
./snapshot-dependencies/
./resources/
./application/

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

代码语言:javascript
复制
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
    <layout>LAYERED_JAR</layout>
</configuration>

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

EN

回答 2

Stack Overflow用户

发布于 2020-06-10 02:06:02

文档中提供了如何使用spring- boot -gradle-plugin激活spring boot应用程序的分层fat jar。

详情请访问Packaging Layered Jars with Gradle

build.gradle文件中:

代码语言:javascript
复制
// Groovy solution
bootJar {
    layered()
}


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

希望这能有所帮助。

票数 8
EN

Stack Overflow用户

发布于 2020-10-23 14:56:10

您还可以在此处找到更多信息:

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/gradle-plugin/reference/html/#packaging-layered-jars

代码语言:javascript
复制
bootJar {
  layered {
    enabled = true

    application {
      intoLayer("spring-boot-loader") {
        include "org/springframework/boot/loader/**"
      }
      intoLayer("application")
    }
    
    dependencies {
      intoLayer("snapshot-dependencies") {
        include "*:*:*SNAPSHOT"
      }
      intoLayer("dependencies")
    }

    layerOrder = ["dependencies", "spring-boot-loader", "snapshot-dependencies", "application"]
  }
}

您可以在JAR内部的layers.idx文件中找到相应的层名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62288194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档