【问题标题】: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 定义为我的资源文件夹。

更新:

添加配置截图:

【问题讨论】:

    标签: intellij-idea spring-boot


    【解决方案1】:

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

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

    【讨论】:

    • 感谢我在“文件”->“设置”对话框中尝试过,但没有成功
    【解决方案2】:
    1. 请在 Spring Boot 模块中添加 Spring facet 以获得全面支持
    2. 模块heimdall 的类路径是否正确,即它是否包含显示的resources 文件夹和您的application.properties
    3. 如果这没有帮助,请在我们的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2012-11-26
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      相关资源
      最近更新 更多