一. 問題由來
開發環境、測試環境、生產環境--------咱們的軟件在不一樣的環境中,系統參數和配置可能會不同,好比數據源配置、日誌文件配置、以及一些軟件運行過程當中的基本配置,那每次咱們將軟件部署到不一樣的環境時,都須要修改相應的配置文件?Maven提供了一種方便的解決這種問題的方案,就是profile功能。
java
二. 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 |
完成後目錄結構以下圖所示spring

2.2 定義運行參數
apache

而這裏咱們主要自定義了一個變量bash
2.3 修改Maven pom配置
app
<!--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去讀取參數配置。而這裏咱們利用到變量maven
2.4 啓動項目以驗證
按照以上操做步驟完成後:測試
1.在開發過程當中,咱們能夠在Maven視圖選擇你當前的profile。ui

而後運行,例如當前dev環境配置的系統運行端口是8090。那麼啓動控制檯打印以下信息則表配置成功。spa

2.在實際生產環境發佈的時候,咱們運行如下命令便可切換到dev配置