在 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) 对于每个配置文件,放置您可以将要替换的任何内容作为属性添加到您的配置文件定义中,然后像这样启用 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文件