以數據庫連接池的配置文件(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