Spring启动+ Gradle属性文件

时间:2014-04-26 09:36:40

标签: java gradle

我在src/main/resources application-dev.propertiesapplication-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时,属性将被忽略。

1 个答案:

答案 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()
}