【问题标题】:Spring Boot 2.x Repackage for integration tests with gradleSpring Boot 2.x Repackage 用于使用 gradle 进行集成测试
【发布时间】: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


    【解决方案1】:

    您必须查看Spring Boot Gradle Plugin 的文档。具体在4.1. Packaging executable jars部分。

    可以使用 bootJar 任务构建可执行的 jar。该任务是在应用 java 插件时自动创建的,并且是 BootJar 的一个实例。 assemble 任务会自动配置为依赖于 bootJar 任务,因此运行 assemble(或构建)也会运行 bootJar 任务。

    您也可以使用executable warsexecutable and deployable wars

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 2020-07-24
      • 2014-08-15
      • 2020-04-09
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2018-05-04
      • 2020-02-10
      相关资源
      最近更新 更多