Maven项目打包时指定配置策略
以数据库连接池的配置文件(db.properties)为例,一般的项目会有开发用数据库,测试用数据库,正式环境数据库三种配置。
以前的做法是拷贝成三份,注释掉其他了两份
# 开发用 jdbc.url =jdbc:mysql://localhost:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true jdbc.username = root jdbc.password = root # 测试用 # jdbc.url =jdbc:mysql://111.111.111.111:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true # jdbc.username = root # jdbc.password = a@#$ # 正式环境用 # jdbc.url =jdbc:mysql://112.121.211.222:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true # jdbc.username = root # jdbc.password = asd123&*(
项目每次打包到不同的环境都需要,选择正确的配置,取消它的注释,并注释掉另外两套配置。
如果用到pom.xml中的profiles标签,打包前的这些配置步骤就可以省略了。
1、首先在src/main/resources下建立environment文件夹,里面新建3个properties文件,代表上面提到的三种配置策略
db_dev.properties
env.jdbc.url =jdbc:mysql://localhost:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true env.jdbc.username = root env.jdbc.password = root
db_test.properties
env.jdbc.url =jdbc:mysql://111.111.111.111:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true env.jdbc.username = root env.jdbc.password = a@#$
db_prod.properties
env.jdbc.url =jdbc:mysql://112.121.211.222:3306/app_name?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true env.jdbc.username = root env.jdbc.password = asd123&*(
2、改变原有的db.properties中的内容
db.properties
jdbc.url=${env.jdbc.url} jdbc.username=${env.jdbc.username} jdbc.password=${env.jdbc.password}
3、在pom.xml中追加profiles标签
<profiles> <profile> <id>dev</id> <activation> <!-- 代表默认配置是dev --> <activeByDefault>true</activeByDefault> </activation> <build> <filters> <filter>src/main/resources/environment/db_dev.properties</filter> </filters> </build> </profile> <profile> <id>prod</id> <build> <filters> <filter>src/main/resources/environment/db_prod.properties</filter> </filters> </build> </profile> <profile> <id>test</id> <build> <filters> <filter>src/main/resources/environment/db_test.properties</filter> </filters> </build> </profile> </profiles>
4、pom.xml的resources标签中追加对environment的配置。由于environment文件夹只作为“配置仓库”用,所以它不需要参与编译
<resource> <directory>src/main/resources</directory> <excludes> <exclude>environment/*</exclude> </excludes> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource>
5、打包命令
给开发环境打包(用到得很少,一般都是直接jetty:run来调试)
mvn clean install -Dmaven.test.skip=true -Pdev
给测试环境打包
mvn clean install -Dmaven.test.skip=true -Ptest
给正式环境打包
mvn clean install -Dmaven.test.skip=true -Pprod