Spring Boot 2.x Repackage для интеграционных тестов с Gradle - PullRequest
1 голос
/ 08 января 2020

Я перенес наше приложение из Spring Boot 1.5 в Spring Boot 2.2. Я борюсь с нашим телосложением. В прошлом мы использовали следующее, чтобы получить исполняемый файл Jar со всеми зависимостями Spring для отдельного запуска наших интеграционных тестов в нашем конвейере CI:

task integrationBootRepackage(type: BootRepackage, dependsOn: integrationJar) {
  enabled = true
  withJarTask = integrationJar
  customConfiguration = "integrationRuntime"
  mainClass = "io.test.IntegrationApplicationKt"
}
assemble.dependsOn integrationBootRepackage

Задача интеграции с Jar создает базовый файл c с нашей интеграцией тестовые занятия и основные занятия. В прошлом мы могли «улучшить» эту банку с помощью задачи перепаковки. Но в Spring Boot 2.2 эта задача больше не существует. Spring Documentation только говорит о том, как вы можете создать свои основные JAR-файлы.

С Maven, кажется, все еще доступна переупаковка, так как следующий раздел упоминается в документации по плагину Spring Maven :

Вы также можете использовать ту же конфигурацию, если вы хотите переупаковать вторичный артефакт так же, как заменяется основной артефакт. Следующая конфигурация устанавливает / развертывает один классифицированный артефакт задачи с переупакованным приложением:

Кто-нибудь знает, почему переупаковка все еще доступна с Maven, но не с gradle? Или я просто не могу найти нужную документацию для этого?

Я также пробовал другие подходы, такие как прямое наследование нашей задачиgrationJar от BootJar, но она не помещает пружинные зависимости в 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-файл IntegrationJar с Spring Boot 2.2 и Gradle с Kotlin DSL?

1 Ответ

0 голосов
/ 10 января 2020

Вы должны ознакомиться с документацией Spring Boot Gradle Plugin . Конкретно в разделе 4.1. Упаковка исполняемых jar-файлов .

Исполняемые jar-файлы могут быть созданы с помощью задачи bootJar. Задача создается автоматически, когда применяется плагин java и является экземпляром BootJar. Задача сборки автоматически настраивается в зависимости от задачи bootJar, поэтому при выполнении сборки (или сборки) также запускается задача bootJar.

Вы также можете выполнять исполняемые войны или исполняемые и развертываемые войны .

...