SpringBoot發(fā)布打包動態(tài)切換環(huán)境

SpringBoot支持多種方式切換環(huán)境配置信息,如在配置文件中配置spring.profiles.active: dev,則表明加載application-dev.yml,但這種方式是寫死在配置文件中的,一般在發(fā)布項目時需在命令行下根據(jù)指定環(huán)境動態(tài)改變spring.profiles.active的值,針對這種方式如我們使用的是MAVEN打包工具,可通過如下方式來改變。

1、更改application.xml

由spring.profiles.active=dev更改為spring.profiles.active=@profileActive@

2、更改pom.xml

<profile>
            <id>dev</id>
            <properties>
                <profileActive>dev</profileActive>
                <maven.test.skip>true</maven.test.skip>
                <scope.jar>compile</scope.jar>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profileActive>test</profileActive>
                <maven.test.skip>true</maven.test.skip>
                <scope.jar>provided</scope.jar>
            </properties>
        </profile>
        <profile>
            <id>demo</id>
            <properties>
                <profileActive>demo</profileActive>
                <maven.test.skip>true</maven.test.skip>
                <scope.jar>provided</scope.jar>
            </properties>
        </profile>
        <profile>
            <id>pro</id>
            <properties>
                <profileActive>pro</profileActive>
                <maven.test.skip>true</maven.test.skip>
                <scope.jar>provided</scope.jar>
            </properties>
        </profile>

3、在maven打包的時候執(zhí)行命令

mvn clean install -Dmaven.test.skip=true -Ptest

總結:參數(shù)-Ptest,表明會激活項目下的pom.xml配置的<profiles>標簽下id為test的配置信息,其中默認指向dev,因為<activeByDefault>true</activeByDefault>,所以在eclipse、idea開發(fā)環(huán)境下只要項目是一個maven工程,開發(fā)調試時啟動項目則spring boot 的配置文件
spring.profiles.active=@profileActive@也能動態(tài)識別出默認profile為dev。

至于為啥使用@profileActive@來作為變量的引用,當然這種引用方式也是可以更改的,具體可看如下圖片。

image.png

自定義資源打包插件,則引用方式就變成#profileActive#:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <configuration>
     <encoding>UTF-8</encoding>
     <delimiters>
      <delimiter>#</delimiter>
     </delimiters>
     <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容