在进行真实项目开发的时候,我们需要在不同的环境读取不同的配置信息,比如数据库连接信息,日志级别信息。我们可以用Maven来实现这一特性。
首先要有不同环境下的properties文件
示例:
请注意db.properties和log4j.properties配置文件的位置,一定要放在resources文件夹下,配置遇到过大坑,在这一点上,文章最后会说明。
filter-dev.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/dev?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
db.user=dev
db.password=dev
filter-product.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/product?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
db.user=product
db.password=product
db.properties
db.driver=${db.driver}
db.url=${db.url}
db.username=${db.username}
db.password=${db.password}
接下来在项目的pom.xml文件中添加一下配置,这个配置的作用就是在不同环境下激活不同的配置,方法不止一种,下面提供其中一种可行的方式。
<!-- 通过profile决定env, 根据env来试用不同的过滤文件来处理resources中的properties文件 -->
<build>
<filters><!--获得过滤使用的源文件,即有实际数据的地方-->
<filter>src/main/resources/filters/filter-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering><!--是否使用过滤器-->
<includes>
<include>
*.properties
</include>
</includes>