在 application.conf 中使用 Maven 配置文件属性

Posted

技术标签:

【中文标题】在 application.conf 中使用 Maven 配置文件属性【英文标题】:Use maven profile properties in application.conf 【发布时间】:2018-04-28 13:19:00 【问题描述】:

在我的 pom.xml 文件中,我设置了多个配置文件。我想在我的 application.conf 文件中使用当前配置文件的值。 Ninja Framework 文档只提到了mode configurations,但是我找不到任何关于配置文件的内容。

一个例子:文档提到

database.name=database_production   # will be used when no mode is set (or prod)
%prod.database.name=database_prod   # will be used when running in prod mode
%dev.database.name=database_dev     # will be used when running in dev mode
%test.database.name=database_test   # will be used when running in test mode

如何根据当前使用的配置文件设置不同的数据库名称?

【问题讨论】:

对于 Ninja Framework 具体来说:1) application.conf 需要过滤 2) 在 application.conf 中放置 db.connection.url=$dburl 3) 对于每个配置文件,放置 jdbc :postgresql://dbIp:dbPort/dbName 【参考方案1】:

您可以将要替换的任何内容作为属性添加到您的配置文件定义中,然后像这样启用 Maven 资源过滤:

<build>
  ..
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
  ..
</build>
<profiles>
  <profile>
    <id>developmentProfile</id>
    <properties>
      <dbName>database.name=database_dev</dbName>
    </properties>
    <activation>
      <activeByDefault>false</activeByDefault>
    </activation>
  </profile>
  <profile>
    <id>productionProfile</id>
    <properties>
      <dbName>database.name=database_prod</dbName>
    </properties>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
</profiles>

注意,如果您使用 spring-boot,您应该像这样引用 application.properties 文件中的属性以使其工作:

someOtherProp = something
@dbName@

之后,构建应用程序应正确过滤属性:

mvn clean install -PdevelopmentProfile

结果:

someOtherProp=something
database.name=database_dev

【讨论】:

那么 application.conf 文件中有哪些行?没有?与 application.properties 中的相同吗?一些属性参考组合? 是的,应用程序属性只是一个例子,因为 spring-boot 需要特别考虑。对于任何其他文件,无论是 .conf 还是您只需将属性替换的任何其他文件。除了 spring boot,您可以使用$dbName 之类的属性。无论资源插件遇到dbName 属性(在spring-boot 的情况下使用$@@ 括号,它将用pom.xml 中的配置文件定义中的属性替换它我出于格式化原因编辑了答案,可能更容易阅读。

以上是关于在 application.conf 中使用 Maven 配置文件属性的主要内容,如果未能解决你的问题,请参考以下文章

play2 有选择地覆盖 application.conf 中运行任务的设置

使用 Play 从 java 类访问 application.conf 属性! 2.0

如何在play framework 1.3中分离application.conf以增加conf文件

Ktor application.conf - Jwt 配置

播放 application.conf - 测试配置

Datastax Java 驱动程序 4.6.1 无法使用 application.conf 覆盖配置