Maven實戰之正式環境和測試環境配置分離

最近一直在研究前公司的架構,發現原公司的架構還是很不錯的,對於生產環境以及測試環境這一點,雖然沒有配置中心,但也是一定程度實現了正式環境以及測試環境的分離。

閒話不多說,現在直接上代碼:

首先需要在pom文件中確定filter和要filter的資源,這是通過在build節點中添加filter和resource來實現的,示例如下: 

<build>

<filters>
<filter>${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>

上述配置表示要對<filter>採用的過濾文件${env}.properties</filter>下的資源進行過濾,如果不寫,默認當前目錄,因爲該目錄下沒有二進制文件,所以沒有excluding。<filtering></filtering>true表示需要過濾,<directory></directory>表示需要過濾的文件,過濾時採用的過濾文件爲${env}.properties文件,其中${env}是一個變量,表示當前使用的環境,這是通過在pom文件中通過profile定義的,如下所示:


<profiles>
<profile>
<id>dev</id>
<properties>
<!-- 測試環境 -->
<env>dev</env>

</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>formal</id>
<properties>
<!-- 正式環境 -->
<env>formal</env>

</properties>
</profile>
</profiles>

這裏需要解釋一下activation的意思:

<!--自動觸發profile的條件邏輯。Activation是profile的開啓鑰匙。profile的力量來自於它能夠在某些特定的環境中自動使用某些特定的值;這些環境通過activation元素指定。activation元素並不是激活profile的唯一方式。--> 

通俗一點說,如果檢測到匹配的屬性,則激活該該配置項。

這樣在開發時就不用每次指定這個值。在測試和部署上線時分別通過-P傳入當前的profile id,這樣maven就會將env變量設置爲對應的值,從而導致使用不同的filter文件來對resources下的文件進行過濾替換。


具體如下圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章