如何在IntelliJ for Gradle任务中设置环境变量

时间:2014-11-27 14:24:04

标签: intellij-idea gradle

在命令行上运行时,通过环境变量(例如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文件,因此隐藏错误。

3 个答案:

答案 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命令行作为参数。

How to add a VM argument to the Gradle run configuration 最后,在gradle任务中复制属性,如@cfrick所述,@ mdjnewman已正确显示:

tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
    bootRun.systemProperties = System.properties
}