- 前言:對於一個項目,開發和生產環境之間會使用不同的配置文件,最簡單的例子就是數據庫連接池的配置了。當然,可以在打包上線前對配置文件進行替換,不過這也太low了吧。
簡單的pom.xml中的配置內容
- 比如我們在maven項目中引入了內嵌式的tomcat插件(當然打包方式是要war包),如下代碼
<!--在build標簽中-->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>8821</port>
<!-- 請求路徑 -->
<path>/</path>
</configuration>
</plugin>
<plugins>
指定了端口號是8821,啟動項目后(在idea右邊的maven project),就可以使用8821端口訪問。
8821是我們開發的端口,如果我們想打包上傳到服務器,然后就修改這個端口為8891。
- 首先在pom.xml使用properties標簽來定義端口號
- 然后就創建多個環境,多個環境對tomcat_port這個屬性進行定義
<!--和build平級-->
<profiles>
<profile>
<!--開發環境,這個id就是名稱-->
<id>dev</id>
<properties>
<!--這個標簽就是定義你要設定的properties中的屬性-->
<tomcat_port>8821</tomcat_port>
</properties>
</profile>
<profile>
<!--生產環境-->
<id>pro</id>
<properties>
<tomcat_port>8821</tomcat_port>
</properties>
</profile>
</profiles>
- 然后修改我們的tomcat7系列的maven命令,在后邊添加參數:
-P 環境id
,在idea中,右鍵這個maven命令,就可以設置了
設置完后,點擊運行,
除了tomcat:run 外,其他的maven命令,如:
package -P dev
install -P pro
這些都是可以的。
不同環境下使用不同的數據庫配置文件
和上邊的方法類似,不同的是它會引入項目中的properties配置文件
- 首先,src/main/resources下創建dbprops文件夾,在這個文件夾下創建一個db_dev.properties,內容如下:
#這個env前綴可以自定義,也可以不用
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/tb_dev?characterEncoding=utf-8
env.jdbc.username=dev
env.jdbc.password=dev
也創建一個db_pro.properties
#這個env前綴可以自定義,也可以不用
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/tb_pro?characterEncoding=utf-8
env.jdbc.username=pro
env.jdbc.password=pro
- 然后,修改我們src/main/resources下的db.properties配置文件,這個配置文件就是我們之前的數據庫連接配置文件(因為datasource中指定的路徑就是這個配置文件)
#之前寫的是確定的地址,這回就使用變量
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
- 在pom.xml中添加屬性
<properties>
<!--這個db_env是自定義的,隨便起-->
<db_env>dev</db_env>
</properties>
- 在pom.xml中定義profile
<profiles>
<profile>
<!--環境名-->
<id>dev</id>
<properties>
<!--這個名要和之前定義的db_dev.properties中的dev相同,下邊會看到拼接-->
<db_env>dev</db_env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<db_env>pro</db_env>
</properties>
</profile>
</profiles>
- 在build標簽中添加一個filters和resource指令
<filters>
<filter>src/main/resources/dbprops/db_${db_env}.properties</filter>
</filters>
<resources>
<resource>
<!--這是攔截這個目錄下的配置文件,進行處理-->
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
好了,我們這使用指定打包
package -P pro
然后用觸壓生成的war包,打開WEB-INF\classes\db.properties文件可以看到