spring分层fat jar和gradle插件layertools jarmode

bgibtngc  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(734)

springboot2.3.0有分层的fat jar,它针对容器映像构建进行了优化。现在,spring文档只讨论maven构建工具,而不讨论gradle。
请问,我们需要对gradle插件做些什么才能让它为spring boot构建一个“分层jar”?
例如:如果使用命令提取jar java -Djarmode=layertools -jar app.jar extract 它是用gradle-spring-boot插件制作的 id("org.springframework.boot") version "2.3.0.RELEASE" 失败并显示消息: Unsupported jarmode 'layertools' . 基本上如果jar是用 ./gradlew bootJar 似乎分层jar在默认情况下不处于活动状态。
提取一个分层的jar应该得到以下目录,然后这些目录被复制到另一个容器映像中执行,并且只有当较低的层已经改变时,缓存系统才必须重新读取它们。分层罐提取 -Djarmode=layertools 标志:

  1. ./dependencies/
  2. ./snapshot-dependencies/
  3. ./resources/
  4. ./application/

SpringBlog2.3.0.ml上的博客讨论了maven构建工具和配置:

  1. <artifactId>spring-boot-maven-plugin</artifactId>
  2. <configuration>
  3. <layout>LAYERED_JAR</layout>
  4. </configuration>

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

shstlldc

shstlldc1#

该文档提供了如何使用springbootgradle插件激活springboot应用程序的分层fatjar。
请参见使用gradle Package 分层jar的详细信息。
build.gradle 文件:

  1. // Groovy solution
  2. bootJar {
  3. layered()
  4. }
  5. // Kotlin solution
  6. tasks.getByName<BootJar>("bootJar") {
  7. layered()
  8. }

希望这有帮助。

bwitn5fc

bwitn5fc2#

您还可以在此处找到更多信息:
https://docs.spring.io/spring-boot/docs/current-snapshot/gradle-plugin/reference/html/#packaging-分层罐

  1. bootJar {
  2. layered {
  3. enabled = true
  4. application {
  5. intoLayer("spring-boot-loader") {
  6. include "org/springframework/boot/loader/**"
  7. }
  8. intoLayer("application")
  9. }
  10. dependencies {
  11. intoLayer("snapshot-dependencies") {
  12. include "*:*:*SNAPSHOT"
  13. }
  14. intoLayer("dependencies")
  15. }
  16. layerOrder = ["dependencies", "spring-boot-loader", "snapshot-dependencies", "application"]
  17. }
  18. }

您将在中找到相应的图层名称 layers.idx 你jar里的文件。

展开查看全部

相关问题