【发布时间】:2017-11-28 17:04:13
【问题描述】:
拥有一个 Java Maven Web 应用程序,该应用程序在以下配置文件中设置了硬编码属性:
src/main/resources/database.xml
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="aDatasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://anIpAddress/mydatabase?zeroDateTimeBehavior=convertToNull</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>password</value></property>
</bean>
</beans>
src/main/resources/log4.j.properties
log4j.appender.RF.File=/opt/apache-tomcat-7.0.78/webapps/myapp/WEB-INF/classes/logs.log
在我运行 maven clean install 之前,我不断地通过替换内部 database.xml 来编辑这些文件:
aniPAddress with localhost
root with my local database's root user
password with my local database's root password
log4.properties 内部:
/opt/apache-tomcat-7.0.78/ with $CATALINA_HOME
问题:
- 有没有办法将配置文件外部化,这样我就不必在每次执行新的 Git 签出时都显式更改它?
例如
我是否应该在 src/main/resources 中创建一个包含以下属性的 application.properties 文件:
database.url = localhost
database.user = root
database.password =
tomcat.home = $CATALINA_HOME or /etc/tomcat7/
如何在 database.xml 和/或 log4j.properties 中显式设置这些?
- 有没有办法使用 Maven 配置文件功能来切换配置属性?
例如
maven clean -install -p dev
maven clean -install -p prod
如何配置 pom.xml 文件以反映问题 1 中所需的行为?
【问题讨论】:
-
如果您使用的是 spring(根据您的 xml 判断),我真的不明白为什么您不能在 application.properties 中设置您的属性(就像您自己提到的那样)。然后您可以设置该配置的路径,例如 --spring.config.location=/loc/to/config/file。您甚至可以使用配置文件,例如:application-dev.pproperties 并将您的配置文件设置为 dev --spring.profiles.active=dev。
标签: java maven properties log4j properties-file