我在src/main/resources
application-dev.properties
和application-prod.properties
中有两个属性文件。
当我使用java -jar -Dspring.profiles.active=dev
运行我的应用程序时,它会选择正确的属性文件并且我的应用程序正在运行。
但是,当我使用gradle -Dspring.profiles.active=dev test
时,不会从指定的配置文件设置属性。
我还创建了一个包含application.properties
的{{1}}文件。
当我使用spring.profiles.active=dev
编译并运行时,它按预期工作,但当我使用java -jar test.jar
时,属性将被忽略。
答案 0 :(得分:0)
涉及两个JVM,一个运行Gradle,另一个运行测试。运行gradle -Dspring.profiles.active=dev test
时,您在运行Gradle的JVM上设置属性,而不是运行测试的JVM。 Gradle不会自动将系统属性从其JVM复制到它生成的JVM。 Gradle论坛上的This topi c解释了如何在运行测试的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()
}