【发布时间】:2020-04-26 05:10:17
【问题描述】:
我将我们的应用程序从 Spring Boot 1.5 迁移到 Spring Boot 2.2。我正在为我们的 gradle 构建而苦苦挣扎。过去,我们使用以下方法来获取包含所有 Spring 依赖项的可执行 Jar 文件,以分别在 CI 管道中运行我们的集成测试:
task integrationBootRepackage(type: BootRepackage, dependsOn: integrationJar) {
enabled = true
withJarTask = integrationJar
customConfiguration = "integrationRuntime"
mainClass = "io.test.IntegrationApplicationKt"
}
assemble.dependsOn integrationBootRepackage
integrationJar 任务使用我们的集成测试类和主类构建一个基本 jar。在过去,我们能够通过重新打包任务“启动”这个 jar。但是在 Spring Boot 2.2 中,这个任务已经不存在了。 Spring Documentation 仅告诉您如何构建您的主要 JAR。
使用 Maven 重新打包似乎仍然可用,因为 Spring Maven plugin documentation 中提到了以下部分:
如果您想以与替换主要工件相同的方式重新打包次要工件,也可以使用相同的配置。以下配置使用重新打包的应用程序安装/部署单个任务分类工件:
有谁知道为什么 Maven 仍然可以重新打包,但 gradle 不可以?还是我只是找不到合适的文档?
我还尝试了其他方法,例如直接从BootJar 继承我们的 integrationJar 任务,但它没有将 spring 依赖项放入 jar 中。
val integrationJar = tasks.register("integrationJar", BootJar::class) {
description = "Assembles a jar archive containing the integration classes."
group = "build"
mainClassName = "io.test.IntegrationApplicationKt"
archiveAppendix.set("integration")
from(sourceSets!!["main"].output)
from(sourceSets["integration"].output)
}
谁能提供一些帮助我如何使用 Spring Boot 2.2 实现 Spring 重新打包的 integrationJar 文件并使用 Kotlin DSL 进行 gradle?
【问题讨论】:
标签: spring-boot gradle integration-testing