Установить активный профиль пружины с помощью bootWar

Я пытаюсь установить активный профиль пружины при создании файла WAR. Я создаю файл WAR с gradle bootWar

Мне удалось найти решение, которое работает для gradle bootRun -Pprofiles=prod

bootRun {
  if (project.hasProperty('profiles')) {
    environment SPRING_PROFILES_ACTIVE: profiles
  }
}

Но

bootWar {
  if (project.hasProperty('profiles')) {
    environment SPRING_PROFILES_ACTIVE: profiles
  }
}

Дает мне эту ошибку

Не удалось найти метод environment() для аргументов [{SPRING_PROFILES_ACTIVE=staging}] для задачи ':bootWar' типа org.springframework.boot.gradle.tasks.bundling.BootWar.

Как мне заставить это работать для файлов WAR?

1 ответ

(Ссылки относятся к демонстрационному проекту, в котором я делаю то же самое, что вы пытаетесь сделать прямо сейчас, но с некоторой дополнительной сложностью, сначала прочитайте свойство и т. Д. И установите различные профили как активные:development,testing,productionи некоторые другие посты ТАК)


Предположим, мы хотим установить активный профиль как production,

в build.gradleВы можете создать задачу, которая пишет свойствоspring.profiles.activeс использованиемant.propertyfileкак это:

task setProductionConfig() {
    group = "other"
    description = "Sets the environment for production mode"
    doFirst {
        /*
           notice the file location ("./build/resources/main/application.properties"),
           it refers to the file processed and already in the build folder, ready
           to be packed, if you use a different folder from `build`, put yours
           here
        */
        ant.propertyfile(file: "./build/resources/main/application.properties") {
            entry(key: "spring.profiles.active", value: "production")
        }
    }
    doLast {
        // maybe put some notifications in console here
    }
}

Тогда вы говоритеbootWarЗадача зависит от этой предыдущей задачи, которую мы сделали так:

bootWar {
    dependsOn setProductionConfig
}
Другие вопросы по тегам