1. 程式人生 > >SpringBoot初識(四)——Maven多環境配置

SpringBoot初識(四)——Maven多環境配置

Maven多環境有什麼好處

    在日常專案開發中,我們經常需要在開發環境、測試環境、生產環境等情況下進行專案的部署,對於配置檔案來說,如果無法識別各個環境,就意味著當我們在進行開發時,需要將配置檔案的內容更改為測試環境,而在進行生產部署時,又需要將其內容改為生產內容。這對於一個長期專案來說簡直是災難性的,因為我們需要將更多的精力放在無關係統功能的層面,而Maven多環境配置的出現恰恰幫我們解決了這些。接下來我們通過一個簡單的例子來實現相應功能。

Maven多環境配置

    假設我們現在有開發和生產兩個環境(當然在實際開發過程中,可能部署環境會多於這兩個)。那麼我們如何進行切換呢。
    緊接上一節內容,我們複製一個chapter_3的資料夾,內容與chapter_2相同。然後在resources資料夾下新建appliaction-dev.yml及appliaction-prod.yml兩個檔案(注意,這兩個檔案應採用application-name.yml的格式,以便後期可以根據多環境查詢到),並將application.yml的內容各複製一份到對應檔案中。
pom檔案中新增如下內容:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profileActive>dev</profileActive>
        </properties>
        <activation>
            <!--預設啟用-->
            <activeByDefault>true</activeByDefault
>
</activation> </profile> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles> <build> <resources> <resource
>
<directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/*</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application.yml</include> <include>application-${profileActive}.yml</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>

application.yml檔案內容如下:

spring:
  profiles:
    active: @profileActive@

application-dev.yml檔案內容如下:

server:
  port: 8090

#自定義的屬性
my:
  name: willem,from dev

application-prod.yml檔案內容如下:

server:
  port: 8090

#自定義的屬性
my:
  name: willem,from prod

啟動專案並通過postman進行訪問,結果如下
這裡寫圖片描述
可以看出,此時訪問得到的內容為application-dev.yml中的內容。
若我們將pom.xml檔案中prod的activeByDefault設定為true,再次啟動專案,會得到如下結果
這裡寫圖片描述
此時得到的內容為application-prod.yml中的內容。通過maven多環境的配置,我們實現了程式的便利性,只需在不同環境是應用不同而選項,就可以輕而易舉的將專案打包為我們想要的樣子。
專案目錄結構如下
這裡寫圖片描述
專案地址:https://github.com/Willem520/spring-boot-learning.git,原始碼位於chapter_3資料夾下