java - Spring Layered 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 提取 jar这是用 Gradle Spring 引导插件制作的 id("org.springframework.boot") version "2.3.0.RELEASE"它失败并显示消息:Unsupported jarmode 'layertools' .基本上,如果 jar 是用 ./gradlew bootJar build 的默认情况下,分层 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 Layered Fat Jar 和 Gradle 插件 layertools jarmode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288194/

相关文章:

java - 在 eclipse 中安装用于 java 的 Windows Azure 访问控制服务过滤器插件的困难

java - 我应该如何解释接口(interface)和抽象类之间的区别?

java - 在 SQLite 数据库中实现类似引用计数的东西

java - session.get() 无法解析字段,参数

java - 如何让这个 FlowLayout 包裹在它的 JSplitPane 中?

java.sql.SQLException : HikariDataSource HikariDataSource (HikariPool-1) has been closed

java - 找不到org.springframework.web.WebApplicationInitializer

java - JpaRepository是否具有用于更新特定对象的补丁方法

java - 如何使用 Spring Boot 注入(inject)带有 InputStreamReader 作为其参数的 BufferedReader?

java.lang.IllegalArgumentException : secret key byte array cannot be null or empty