我正在尝试设置gradle以启用各种spring配置文件来启动bootRun
进程。
我当前的bootRun
配置如下所示:
bootRun {
// pass command line options from gradle to bootRun
// usage: gradlew bootRun "-Dspring.profiles.active=local,protractor"
if (System.properties.containsKey('spring.profiles.active')) {
systemProperty "spring.profiles.active", System.properties['spring.profiles.active']
}
}
我想使用
gradle
任务设置系统属性,然后执行bootRun
。我的尝试看起来像这样:
task bootRunDev
bootRunDev {
System.setProperty("spring.profiles.active", "Dev")
}
几个问题:
systemProperty
是spring boot bootRun配置的一部分吗? bootRunDev
配置,然后再进行bootRun
-埃里克
最佳答案
最简单的方法是定义默认值并允许其被覆盖。我不确定在这种情况下systemProperty的用途是什么。简单的论据就可以了。
def profiles = 'prod'
bootRun {
args = ["--spring.profiles.active=" + profiles]
}
运行dev:
./gradlew bootRun -Pdev
要添加对任务的依赖关系,可以执行以下操作:
task setDevProperties(dependsOn: bootRun) << {
doFirst {
System.setProperty('spring.profiles.active', profiles)
}
}
有许多方法可以在Gradle中实现这一目标。
编辑:
为每个环境配置单独的配置文件。
if (project.hasProperty('prod')) {
apply from: 'gradle/profile_prod.gradle'
} else {
apply from: 'gradle/profile_dev.gradle'
}
每种配置都可以覆盖任务,例如:
def profiles = 'prod'
bootRun {
systemProperty "spring.profiles.active", activeProfile
}
在这种情况下,通过提供
prod
标志运行,如下所示:./gradlew <task> -Pprod