IntelliJ IDEA 没有选择正确的 application-.properties 文件

Posted

技术标签:

【中文标题】IntelliJ IDEA 没有选择正确的 application-.properties 文件【英文标题】:IntelliJ IDEA not picking up correct application-.properties fileIntelliJ IDEA 没有选择正确的 application-.properties 文件 【发布时间】:2017-07-15 19:46:19 【问题描述】:

我有一个使用配置文件属性文件的 spring boot 1.5.1 项目。在我的 /src/main/resources 我有我所有的属性文件

使用 IntelliJ 2016.3.4 时,我设置了

运行配置 |活动档案

到“本地”并运行它。我在控制台中看到了这个:

以下配置文件处于活动状态:本地

但是属性文件中有值 data.count.users=2

并用作:

@Value("$data.count.users")
private int userCount;

没有被拾取并因此导致错误:

原因:java.lang.IllegalArgumentException:无法解析 字符串值“$data.count.users”中的占位符“data.count.users”

但是,如果我通过 gradle 运行它

bootRun 
  systemProperty 'spring.profiles.active', System.properties['spring.profiles.active'] 

作为

gradle bootRun -Dspring.profiles.active=local

然后一切都按预期使用本地配置文件启动。谁能明白为什么没有正确拾取?在 IntelliJ 项目结构中,我将 /src/main/resources 定义为我的资源文件夹。

更新:

添加配置截图:

【问题讨论】:

【参考方案1】:

我在这里可能是错的,但看起来spring.profiles.active 环境变量实际上并未在您的配置中设置,无论您选择什么作为活动配置文件。这可能是 IntelliJ 的一个错误。

但是,在 Run -> Edit Configurations 中设置环境变量绝对适合我。

【讨论】:

感谢我在“文件”->“设置”对话框中尝试过,但没有成功【参考方案2】:
    请在 Spring Boot 模块中添加 Spring facet 以获得全面支持 模块heimdall 的类路径是否正确,即它是否包含显示的resources 文件夹和您的application.properties? 如果这没有帮助,请在我们的 bugtracker 中提交一个最小示例项目,以重现您项目的确切结构,有太多变量需要调查 https://youtrack.jetbrains.com/issues/IDEA。

【讨论】:

就是这样,设置 Spring facet 是缺失的部分。我猜它在 15 和 16 之间的存储方式不同? 第一步你是怎么做的?【参考方案3】:

这也可能是由于非标准配置设置所致,例如:

src/main/resources
├── application.properties
├── config1
│   ├── application-dev.properties
│   ├── application-prod.properties
│   ├── application.properties
│   └── logback-spring.xml
├── config2
│   ├── application-dev.properties
│   ├── application-prod.properties
│   ├── application.properties
│   └── logback-spring.xml
└── config3
    ├── application-dev.properties
    ├── application-prod.properties
    ├── application.properties
    └── logback-spring.xml

这可以通过使用参数logging.configspring.config.name分别传递给logback和spring来解决。对于上面的例子:

java -jar \
-Dspring.profiles.active=dev \
-Dlogging.config=classpath:config1/logback-spring.xml \
-Dspring.config.name=application,config1/application \
target/my-application.0.0.1.jar

这里使用根application.properties,被config1/application.properties覆盖,被config1/application-dev.properties覆盖。参数(环境变量)可以在IDEA的运行配置中指定VM Options

就高级 IDE 支持(突出显示、补全等)而言,复杂/自定义配置设置存在一个未解决的问题:IDEA-180498

【讨论】:

以上是关于IntelliJ IDEA 没有选择正确的 application-.properties 文件的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA方法参数无法正确显示

调整Intellij IDEA内存

IntelliJ IDEA 14.03 运行servlet前怎样设置web.xml

为何IntelliJ IDEA比Eclipse更好

HSQLDB 选择在 intellij IDEA 中显示没有数据

IntelliJ IDEA如何开发GWT应用?