在application.properties中使用pom.xml的属性值

时间:2017-08-10 22:46:05

标签: java xml spring maven

我正在尝试读取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启动时,我使用@ConfigurationProperties从application.properties中读取值。 但是当我打印它时,它只打印@ app.mobile.db.host @。 我哪里错了?请帮助。

1 个答案:

答案 0 :(得分:0)

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

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