在命令行上运行时,通过环境变量(例如gradle bootRun
)将弹簧配置文件传递给SPRING_PROFILES_ACTIVE
的最简单方法是(对我而言)。
与 Application 配置不同,gradle任务的配置不提供环境变量的输入。由于虚拟机选项似乎没有被选中,我无法从IDE运行这些任务。
我知道,我可以使用envvar设置启动IntelliJ,但这看起来相当麻烦。
所以我需要的是SPRING_PROFILES_ACTIVE=dev,testdb gradle bootRun
的IntelliJ吊坠,除非有充分的理由,否则他们就把它留下了。
系统是linux,intellij 14.有问题的项目是使用springboot,我想从IntelliJ中的main
运行到 springloaded + bootRun
并运行单独的compileGroovy
调用,因为IntelliJ不是"理解"完全gradle文件,因此隐藏错误。
答案 0 :(得分:8)
在System.properties
(或其他)任务中使bootRun
可用。
bootRun.systemProperties = System.properties
这样我们就可以像-Dspring.profiles.active=dev
一样设置IntelliJ VM选项。
答案 1 :(得分:4)
我已成功将以下内容添加到build.gradle文件中:
tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
systemProperty('spring.profiles.active', 'local')
}
这允许从IntelliJ运行gradlew bootRun
,而无需对IntelliJ运行/调试配置进行任何更改(也可以从命令行进行更改,而无需手动指定配置文件)。
答案 2 :(得分:4)
这是我使用Gradle / IntelliJ
设置Spring环境变量/设置的解决方案首先,定义一个基本属性文件,然后根据您的环境定义一个,例如:
@Configuration
@PropertySources(value = {@PropertySource("classpath:default.properties"),@PropertySource("classpath:${env}.properties")})
在上面的例子中,要特别注意@PropertySource("classpath:${env}.properties")
。这是一个环境变量。
接下来,向IntelliJ添加VM参数(通过Gradle Tasks运行配置) - 或通过gradle命令行作为参数。
最后,在gradle任务中复制属性,如@cfrick所述,@ mdjnewman已正确显示:
tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
bootRun.systemProperties = System.properties
}