天天看點

Maven Filter與Profile隔離生産環境與開發環境

Maven Filter與Profile隔離生産環境與開發環境

在不同的開發階段,我們一般用到不同的環境,開發階段使用開發環境的一套東西,測試環境使用測試環境的東西,可能有多個測試環境,生産環境使用的是另外一套,生産環境要求是最嚴格的。

不同環境,所需要的伺服器位址,資料庫,緩存,配置中心等配置一般不同,如果每次切換環境都要手動修改,那就太麻煩了,好在使用Maven可以幫我們做這些事情。

介紹

  • Filter: 過濾,一般配合maven resource插件使用,可以替換maven資源目錄下的文本檔案中變量為我們設定的值,變量使用${}包起來。
  • Profile: 側面,可以了解為某個角度,盲人摸象角度不同得出的結論也不同,配置不同的profile,就像從不同的角度看待一個東西,得出的結果不一樣。在開發中指:“環境”

案例

Filter的使用
  1. 建立一個maven項目,現在IDE建立項目步驟都非常簡單
  2. 在resource目錄下建立一個任意檔案,我們建立檔案名為 application.properties檔案,内容隻有一行
    app.name=${maven.app.name}
               
  3. 在main目錄下建立filters目錄,然後建立一個dev.properties檔案,裡面也隻有一行内容,如下:
    maven.app.name=aihe-dev
               
  4. 配置pom.xml,編譯部分如下:
    <build>
            <filters>
                <!-- 指定過濾變量的位置 -->
                <filter>src/main/filters/dev.properties</filter>
            </filters>
            <plugins>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <!-- 使用預設的變量标記方法即${*} -->
                        <useDefaultDelimiters>true</useDefaultDelimiters>
                    </configuration>
                </plugin>
            </plugins>
    
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <!-- 啟用過濾 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
               
  5. 現在的目錄結構如下:
Maven Filter與Profile隔離生産環境與開發環境

image.png

  1. 編譯運作檢視效果。
    mavn clean compile
               
Maven Filter與Profile隔離生産環境與開發環境
profile使用
  1. 上面我們可以看到,filter是生效的,但是如果隻是這樣用,那麼功能太簡單了點,是以還要加上profile.
  2. 修改pom.xml,并且添加profile,我們配置了兩個profile,一個dev預設是激活狀态,一個pro
<build>
        <filters>
            <!-- 指定過濾變量的位置 -->
            <filter>src/main/filters/${env}.properties</filter>
        </filters>
        <!-- ...與剛才的内容相同 -->
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

        <profile>
            <id>pro</id>
            <properties>
                <env>pro</env>
            </properties>
        </profile>
    </profiles>

           
  1. 添加pro.properties,key和dev.properties中的key相同,内容如下:
    maven.app.name=aihe-pro
               
  2. 運作檢視效果,maven指令行的-P參數指定使用profile
// 指定profile為pro時候,可以看到application.properties檔案中的内容為maven.app.name=aihe-pro
mvn clean compile -P pro

//profile為dev的時候,檔案中的内容為maven.app.name=aihe-dev
mvn clean compile -P dev
           

到這一步基本完事,在實際開發中涉及的環境比較多就多配置幾個,這是目前項目配置的環境,好幾個

Maven Filter與Profile隔離生産環境與開發環境

結束

maven作為常用的工程化管理工具,常見的開發功能還是有必要掌握的

參考

下一篇: 好好幹活