Подтвердить что ты не робот

Как установить окружения vars в IntelliJ для задач Gradle

Самый простой способ передать профили spring на gradle bootRun (для меня) по переменной окружения (например, SPRING_PROFILES_ACTIVE), когда выполняется в командной строке.

В отличие от конфигураций приложений, конфигурация для задач gradle не предоставляет вход для переменных среды. И поскольку параметры виртуальной машины не подбираются, как кажется, я не могу запускать эти задачи из среды IDE.

Я знаю, что я мог бы запустить IntelliJ с набором envvar, но это кажется довольно громоздким.

Так что мне нужен кулон IntelliJ для SPRING_PROFILES_ACTIVE=dev,testdb gradle bootRun, если нет веской причины, они оставили это.

Система - это linux, intellij 14. В проекте используется springboot, и я хочу перейти от запуска main в IntelliJ к работе с springloaded + bootRun и разделить вызовы compileGroovy, поскольку IntelliJ не "понимает", файл gradle полностью и для этого скрывает ошибки.

4b9b3361

Ответ 1

Сделайте System.properties доступным в bootRun (или других) задачах.

bootRun.systemProperties = System.properties

Таким образом, мы можем установить параметры IntelliJ VM, например -Dspring.profiles.active=dev.

Ответ 2

У меня был успех, добавив следующее в файл build.gradle:

tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
    systemProperty('spring.profiles.active', 'local')
}

Это позволяет запускать gradlew bootRun из IntelliJ без каких-либо изменений в конфигурациях запуска/отладки IntelliJ (а также из командной строки без необходимости вручную указывать профиль).

Ответ 3

Вот мое решение для настройки переменных/параметров среды Spring с помощью Gradle/IntelliJ

Сначала определите базовый файл свойств, а затем один на основе вашей среды, например:

@Configuration
@PropertySources(value = {@PropertySource("classpath:default.properties"),@PropertySource("classpath:${env}.properties")})

В приведенном выше примере обратите внимание на @PropertySource("classpath:${env}.properties"). Это переменная среды, которую вытягиваете.

Затем добавьте аргумент VM в IntelliJ (через Gradle Tasks Run Configurations) - или в качестве аргумента через командную строку Gradle.

How to add a VM argument to the Gradle run configuration Наконец, скопируйте свойства в задачу Gradle, как указано @cfrick, и @mdjnewman правильно показали:

tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
    bootRun.systemProperties = System.properties
}