У меня есть два файла свойств в src/main/resources
application-dev.properties
и application-prod.properties
.
Когда я запускаю свое приложение с помощью java -jar -Dspring.profiles.active=dev
он выбирает правильный файл свойств и работает мое приложение.
Однако, когда я использую gradle -Dspring.profiles.active=dev test
, свойства не заданы из указанного профиля.
Я также создал файл application.properties
содержащий spring.profiles.active=dev
. Когда я компилирую и запускаю java -jar test.jar
он работает так, как ожидалось, но когда я использую gradle test
свойства игнорируются.
Есть два JVMs, один из которых работает Gradle, и один запускает ваш тест. Когда вы запускаете gradle -Dspring.profiles.active=dev test
вы устанавливаете свойство на JVM, запущенном Gradle, а не JVM, выполняющий ваш тест. Gradle автоматически не копирует свойства системы из своей JVM в JVM, который он создает. В этой статье на форумах Gradle объясняется, как установить свойства JVM, запускающего ваш тест, но вкратце вам понадобится что-то подобное в вашем build.gradle:
tasks.withType(Test) {
systemProperty 'spring.profiles.active', 'dev test'
}
Если вы установили активный профиль как системное свойство, вы можете использовать это:
tasks.withType(Test) {
systemProperty 'spring.profiles.active', System.getProperty('spring.profiles.active')
}
Чтобы скопировать все свойства системы:
tasks.withType(Test) {
systemProperties = System.getProperties()
}