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.config
和spring.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 14.03 运行servlet前怎样设置web.xml