【问题标题】:Using property values of pom.xml in application.properties在 application.properties 中使用 pom.xml 的属性值
【发布时间】:2017-08-10 22:46:05
【问题描述】:

我正在尝试读取 pom.xml 的值并将其注入 application.properties。但我无法做到这一点。 在我的 pom.xml 中,我的属性值如下:

<properties>
     <app.mobile.db.host>
        ${env.APP_MOBILE_DB_HOST}
    </app.mobile.db.host>
...
</properties>

而且,APP_MOBILE_DB_HOST 来自 .m2 文件夹的 settings.xml。 我也在 pom.xml 中添加了以下几行。

<build>
    <resources>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
....

在 application.properties 我访问喜欢

app.host= @app.mobile.db.host@

在 Spring Boot 中,我使用 @ConfigurationProperties 从 application.properties 读取值。 但是当我打印它时,它只会打印@app.mobile.db.host@。 我哪里错了?请帮忙。

【问题讨论】:

    标签: java xml spring maven


    【解决方案1】:

    @ 仅在您使用 spring-boot-starter-parent 时有效。此外,如果您希望值来自settings.xml,则不应在pom.xml 中重新定义它。最后,env.x 语法用于环境变量;从您的 pom 中删除该行并将 application.properties 更改为 app.host = @APP_MOBILE_DB_HOST@ 应该可以解决问题。如果您绝对必须为APP_MOBILE_DB_HOST 创建别名,请将其定义为pom.xml 中的app.host=${APP_MOBILE_DB_HOST},尽管我不确定Maven 是否会多次传递属性解析。

    通过运行 mvn resources:resources -DAPP_MOBILE_DB_HOST=test 并检查 target/classes/application.properties 来验证您的更改。您无需运行该应用程序。

    【讨论】:

    • 我从 pom.xml 中删除了 env.x 行。在application.properties 中,我正在读取app.host=${APP_MOBILE_DB_HOST} 之类的值。仍然无法正常工作。在 settings.xml 中的属性是这样的&lt;app.mobile.db.host&gt;XXX&lt;/app.mobile.db.host&gt;
    • @ninja.bhaSiv 再读一遍,我不是这么说的。如果您不能按照这些简单的说明进行操作,那么我无法帮助您,抱歉。
    • 很抱歉给您带来了困惑。我在 pom.xml 中添加了spring-boot-starter-parent。然后删除了env.x 行。在application.properties 中,我以app.host=@APP_MOBILE_DB_HOST@ 的身份访问它。但它没有获得价值
    • @ninja.bhaSiv 显然,您需要在settings.xml 中有APP_MOBILE_DB_HOST;我认为这是常识,但是...
    猜你喜欢
    • 2017-08-27
    • 2016-08-10
    • 2019-12-07
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多