JavaWeb-Maven Profile切換資料庫連線配置
切換資料庫連線配置
編寫不同環境的配置檔案
1.在pinyougou-dao工程中src/main/resources下建立filter資料夾
2.在filter資料夾下建立db_dev.properties ,用於配置開發環境用到的資料庫
envir.jdbc.driver=com.mysql.jdbc.Driver envir.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb?characterEncoding=utf-8 envir.jdbc.username=root envir.jdbc.password=root |
3.在filter資料夾下建立
envir.jdbc.driver=com.mysql.jdbc.Driver envir.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb_pro?characterEncoding=utf-8 envir.jdbc.username=root envir.jdbc.password=root |
4.修改properties資料夾下的db.properties檔案
jdbc.driver=${envir.jdbc.driver} jdbc.url=${envir.jdbc.url} jdbc.username=${envir.jdbc.username} jdbc.password=${envir.jdbc.password} |
定義Profile
修改pom.xml檔案
<!-- install -P pro/dev 安裝 pro環境/dev環境的 properties配置檔案 package -P pro/dev 打包 pro/dev 環境的 properties --> 配置預設install/package使用的properties檔案,如執行package (-P pro)命令時,不指定-P pro時預設使用這個配置, --> <properties><!--預設使用的properties檔案配置--> <env>dev</env> </properties> <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> </profile> <profile> <id>pro</id> <properties> <env>pro</env> <!-- 可以使用<en>pro</en>標籤,但是需要在下面的filter路徑中改為${en},否則找不到 --> </properties> </profile> </profiles> |
資源過濾與變數替換
修改pom.xml ,在build節點中新增如下配置
<build> <!-- 定義過濾器 ,指定過濾資源的地址--> <filters> <filter>src/main/resources/filters/db_${env}.properties</filter> <!-- 這裡的${env}中的名稱env必須與上面配置的預設的properties中的標籤名env相同,否則報錯,可以與上面的預設properties配置下面各個環境下的 <env>標籤不同名,不同名時(即不是env時)即使通過package -P pro指定環境也會使用預設的properties配置,因為在預設propeties配置的下面的profiles中均為<env>標籤的配置,找不到同名的 --> </filters> <resources> <resource> <!-- 資源目錄,下面的意思是在下面的資源目錄下啟用過濾 --> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> |
這裡我們利用filter實現對資原始檔(resouces)過濾
maven filter可利用指定的xxx.properties中對應的key=value對資原始檔中的${key}進行替換,最終把你的資原始檔中的username=${key}替換成username=value
打包
在pinyougou-dao
工程執行命令:package -P pro , 解壓生成的jar包,觀察db.properties配置檔案內容,已經替換為生產環境的值。