Maven項目多環境之間的配置文件的切換

  • 前言:對於一個項目,開發和生產環境之間會使用不一樣的配置文件,最簡單的例子就是數據庫鏈接池的配置了。固然,能夠在打包上線前對配置文件進行替換,不過這也太low了吧。mysql

    簡單的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>

title

指定了端口號是8821,啓動項目後(在idea右邊的maven project),就能夠使用8821端口訪問。sql

title

8821是咱們開發的端口,若是咱們想打包上傳到服務器,而後就修改這個端口爲8891。

  • 首先在pom.xml使用properties標籤來定義端口號
    title
  • 而後就建立多個環境,多個環境對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命令,就能夠設置了
    title

title

設置完後,點擊運行,
title數據庫

除了tomcat:run 外,其餘的maven命令,如:apache

package -P dev
install -P pro

這些都是能夠的。tomcat

不一樣環境下使用不一樣的數據庫配置文件

和上邊的方法相似,不一樣的是它會引入項目中的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.propertiesmaven

#這個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文件能夠看到
titleide

相關文章
相關標籤/搜索