最近接觸的項目都是在很多地方都落地的項目,需要支持不同的環境使用不同的配置文件。一直以來都以為是人工的去寫不同的配置文件,手動的去修改運用的配置文件。感覺自己還是太low呀。maven的使用的還停留在基礎上。后面看項目才發現maven可以不同環境不同的發布,只需要制定環境參數或者設置就可以,整個工程簡單粗暴。覺的非常不錯,於是想深入的了解一下。寫下此文.
一、maven profile介紹
profile可以讓我們定義一系列的配置信息,然后指定其在相應的環境下使用相應的配置文件。這樣我們就可以根據環境的不同切換不同的配置文件,然后每個profile對應不同的激活條件和配置信息,從而達到不同環境使用不同配置信息的效果。for example,我們的項目落地不同的地域,每個地域都有每個地域特色的功能,需要我們配置不同一些參數。更加實際的情況是我們的生產環境與測試環境使用不同的數據庫,賬號密碼、連接地址可能不一樣,如果每次你都切換環境都需要自己手動去修改這些東西,一次兩次你可能覺的還好,每次測試、上線都需要修改的時候我保證你會瘋的。相信我!哈哈,這個時候就是profile的作用,可以一次性解決你的問題。特別結合持續集成工具的時候,profile可以很方便的上線發布。
二、如何配置profile
profile有三種配置方式:
單個項目配置:第一種是直接在pom.xml中配置
用戶配置:可以在用戶的setting.xml中配置。該文件在用戶家目錄下的“.m2”目錄下。
全局配置:可以在maven的conf的setting.xml中配置。
在pom.xml中配置的用法(個人推薦)
<profiles> <!--本機環境(127.0.0.1) --> <profile> <id>local</id>//指定profile id <properties> <dir>conf</dir>//配置文件所在位置 <env>ecosp_develop_local</env>//文件名 <suffix>local</suffix> </properties> <activation> <activeByDefault>true</activeByDefault>//默認使用的配置文件 </activation> </profile> <!--測試環境(172。0.0.1) --> <profile> <id>test</id> <properties> <dir>conf</dir> <env>ecosp_develop_test</env> <suffix>test</suffix> </properties> </profile> <profiles>
setting.xml中配置profile
當profile定義在settings.xml中時意味着該profile是全局的,它會對所有項目或者某一用戶的所有項目都產生作用。因為它是全局的,所以在settings.xml中只能定義一些相對而言范圍寬泛一點的配置信息,比如遠程倉庫等。而一些比較細致一點的需要根據項目的不同來定義的就需要定義在項目的pom.xml中。具體而言,能夠定義在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定義在<properties>里面的鍵值對可以在pom.xml中使用。
三、如何使用profile
1、如何制定使用那個profile
pom.xml中的activation標簽可以設置默認使用的profile.
setting.xml的activeProfiles標簽可以設置使用的profile。
mvn package –P test命令,-P指定了使用那個profile。
四、總結
1、使項目適配不同的環境非常方便,提高開發效率。
2、依賴於maven。