Задача
Нужно несколько профилей: "prod", "dev", "test", ...
В appication.yaml нужно указать:
spring.profiles.active: "dev"
Этот профиль будет использован ПО УМОЛЧАНИЮ при запуске приложения.
Профиль можно указать при запуске приложения:
java -D"spring.profiles.active=dev" -jar app.jar
или установить env переменную:
SPRING_PROFILES_ACTIVE = dev
Запуск с gradle:
./gradlew bootRun --args='--spring.profiles.active=dev'
или
SPRING_PROFILES_ACTIVE=dev ./gradlew clean bootRun
(https://v.perm.ru/index.php/component/content/article/simple-kotlin?catid=13&Itemid=101#spring_profiles)
Но, допустим, для некоторых ТЕСТОВ нужно использовать какой-то другой профиль. Для этого нужно создать файл src/test/resources/application-test.yaml и в тесте указать этот профиль:
@SpringBootTest @ActiveProfiles("test") // Значения задаются в файле: // src/test/resources/application-test.yaml // @ActiveProfiles("test") -> TEST/resources/application-test.yaml // "test" -> application-test.yaml // application-test.yaml есть только в src/TEST/resources // Если application-test.yaml нет существует (ни в main, ни в test), то тогда ниоткуда не берутся class ConfigForMainDev { @Value("\${myconfig.remoteHost}") val remoteHost: String? = null @Test fun getMyConfigRemoteHost() { assertEquals("http://127.0.0.1:8980/vacancy/test/api", remoteHost) } }
Пример в проекте https://github.com/cherepakhin/vacancy_wicket_k
src/main/resources/application.yaml:
spring.profiles.active: "dev"
src/main/resources/application-dev.yaml:
myconfig: remoteHost: http://127.0.0.1:8980/vacancy/api companyRestUrl: /company vacancyRestUrl: /vacancy
src/test/resources/application-test.yaml:
myconfig: remoteHost: http://127.0.0.1:8980/vacancy/test/api companyRestUrl: /company vacancyRestUrl: /vacancy