1. 程式人生 > >Maven實現多環境配置切換

Maven實現多環境配置切換

一. 問題由來

        開發環境、測試環境、生產環境--------我們的軟體在不同的環境中,系統引數和配置可能會不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置,那每次我們將軟體部署到不同的環境時,都需要修改相應的配置檔案?Maven提供了一種方便的解決這種問題的方案,就是profile功能。

二. Maven實現多環境配置切換的步驟

2.1 定義多環境配置檔案

按照不同環境,我們讀取不同的配置檔案,假設有以下定義:

profile檔名配置檔案內容
dev application-dev.yml server.port 8090
test application-test.yml server.port 8091
prod application-prod.yml server.port 8092

 

完成後目錄結構如下圖所示

 

 

 

2.2 定義執行引數

根據Spring Boot規範,我們修改application.yml檔案新增以下內容

 

2.3 修改Maven pom配置

修改父工程pom.xml檔案,新增以下配置


    
<!--profile配置-->
<profiles>
<profile>
<id>dev</id>
<activation>
<!--預設開啟dev配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>

<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>

<profile>
<id>prd</id>
<properties>
<profileActive>prd</profileActive>
</properties>
</profile>
</profiles>

<!--編譯配置-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>

<!--Resource檔案編譯配置-->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.yml</include>
<include>application.yml</include>
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

 

pom多環境配置中我們的核心是利用編譯過程中,讀取不同的配置檔案,然後再由spring去讀取引數配置。而這裡我們利用到變數${profileActive}

 

2.4 啟動專案以驗證

按照以上操作步驟完成後:

1.在開發過程中,我們可以在Maven檢視選擇你當前的profile。

然後執行,例如當前dev環境配置的系統執行埠是8089。那麼啟動控制檯列印如下資訊則表配置成功。

 

 2.在實際生產環境釋出的時候,我們執行一下命令即可

 

mvn clean package -dev