Maven filter 配置的使用

 
目标
通过 Maven 的 filters 机制对不同环境(开发、预发布、生产)应用不同的配置信息
 
步骤
1. 首先需要配置 profile 信息,在不同的 profile 中指定变量 “env”为不同的值
<profiles>
    <!-- 开发/测试环境,默认激活 -->
    <profile>
        <id>debug</id>
        <properties>
            <env>debug</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault><!--默认启用的是debug环境配置-->
        </activation>
    </profile>
    <!-- 预发布环境 -->
    <profile>
        <id>staging</id>
        <properties>
            <env>staging</env>
        </properties>
    </profile>
    <!-- 生产环境 -->
    <profile>
        <id>online</id>
        <properties>
            <env>online</env>
        </properties>
    </profile>
</profiles>
 
2. 生成不同环境的配置文件
在 src/main/filters/ 目录下分别创建三个配置文件
filters.debug.properties
filters.staging.properties
filters.online.properties
配置文件中以 key=value 的形式配置一些参数信息,如:
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc:mysql://127.0.0.1:8066/testdb?createDatabaseIfNotExist=true&amp;useUnicode=true
database.userName=username_for_debug
database.password=password_for_debug
 
3. 配置 Maven 编译时的过滤规则
在工程的 pom.xml 中添加如下配置信息
<build>
    <filters>
        <filter>src/main/filters/filters.${env}.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>
 
4. 在资源文件中引用 filters 文件中配置的参数
这里以在 spring 配置文件中的使用举例说明
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
    <property name="driverClass" value="${database.driverClassName}"/>
    <property name="jdbcUrl" value="${database.url}"/>
    <property name="user" value="${database.userName}"/>
    <property name="password" value="${database.password}"/>
    。。。
</bean>
 
5.编译工程
我们在编译的时候需要指定 profile 信息,以便 Maven 找到对应的 filters 文件进行过滤。具体的编译命令如下,最后一个参数指定了编译的 profile 是 debug:
mvn clean package -pl com.bibithink.fooservice -am -Dmaven.test.skip -Pdebug
 

猜你喜欢

转载自bibithink.iteye.com/blog/2253457