我有5个环境:

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

我想为每个环境使用不同的应用程序属性,因此我有以下属性文件,每个文件都有不同的数据源URL:

 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties

我正在使用IntelliJ并在我的本地机器上使用Gradle插件中的bootRun运行我的应用程序。我将使用在所有运行Tomcat的其他环境中部署相同的应用程序war文件。

我试着补充:

——spring.profiles.active =当地

到脚本参数下的运行配置。

我试着添加

-Dspring.profiles.active =当地

虚拟机选项下的“运行”配置。

既不工作。我在启动时一直看到INFO消息说:没有活动配置文件设置,回落到默认配置文件:默认

如果我运行我的应用程序从windows命令行使用

gradle bootRun

但我先设置环境变量

set SPRING_PROFILES_ACTIVE=local

然后一切正常。

所以我的问题是,当从IntelliJ运行bootRun时,我如何激活我的本地spring引导配置文件?


当前回答

一个可能的原因是您没有将命令行参数传递到应用程序的main方法中。几周前我也犯了同样的错误。

public static final void main(String... args) {
    SpringApplication.run(Application.class, args);
}

其他回答

尝试在build.gradle中添加此命令

为了运行配置这个形状:

如果你真的使用了spring引导运行配置(目前只在终极版中支持),那么在“Active profiles”设置中预配置概要文件是很容易的。

我添加了-Dspring.profiles。active=test到VM选项,然后重新运行该配置。它工作得很完美。

可以通过

选择“Run | Edit Configurations…” 进入“Configuration”页签 展开Environment部分以显示VM选项

对于Spring Boot 2.1.0及以后版本,您可以使用

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

试试这个。编辑构建。Gradle文件如下所示。

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }