springboot+maven多環(huán)境動態(tài)配置及編譯失敗的解決方案(步驟詳解)
一、前言
在我們的項目開發(fā)過程中一般會有多套的環(huán)境,比如比較常見的會有三套: dev (研發(fā)環(huán)境),test(測試環(huán)境),prod(生產(chǎn)環(huán)境)。

application.yml 是主配置文件,當(dāng)在不同的環(huán)境中需要激活不同環(huán)境的配置文件,改動active 后面的value即可。但是這種方式有個弊端,需要每次手動改動才生效,不靈活,有沒有一個比較簡便的方式呢?其實maven給我們提供一種在編譯階段時動態(tài)修改激活環(huán)境的參數(shù)的方法。
二、springboot+maven多環(huán)境動態(tài)配置
其實很簡單,只需要2步即可
2.1 修改application.yml
application.yml 中的active哪一行改成:
spring:
profiles:
active: @profiles.active@2.2 maven中添加profile配置
<!-- 添加到根project標(biāo)簽的下一級 -->
<profiles>
<!-- 本地開發(fā)環(huán)境(默認(rèn)) -->
<profile>
<id>dev</id>
<properties>
<!-- 自由命名,這個值會在application.yml的"@profiles.active@"取到 -->
<profiles.active>dev</profiles.active>
</properties>
<!-- 默認(rèn)激活dev環(huán)境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 測試環(huán)境 -->
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<!-- 生產(chǎn)環(huán)境 -->
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>在maven中加完以上配置,就可以在idea 的右側(cè)看到dev的配置已經(jīng)激活。

點擊小錘子進(jìn)行編譯,會發(fā)現(xiàn)application.yml中的 @profiles.active@ 編譯完以后 就被替換成 dev

2.3 編譯時如何動態(tài)切換呢
方法一:通過idea的可視化界面進(jìn)行操作

方案二:通過maven 編譯命令指定參數(shù)
mvn compile -P prod

可以看到編譯完成以后的文件 active 已經(jīng)變成 prod 了。
2.4 無法編譯成功或正常啟動的解決方案
使用 idea的小錘子進(jìn)行編譯?;蛘咧苯訂禹椖靠赡軙霈F(xiàn) 無法替換掉 application.yml 中active: @profiles.active@,建議使用 2.3 中的 方案一和方案二進(jìn)行編譯,編譯成功以后,只要不執(zhí)行maven clean 命令則就一直能用。
到此這篇關(guān)于springboot+maven多環(huán)境動態(tài)配置及編譯失敗的解決方案的文章就介紹到這了,更多相關(guān)springboot maven多環(huán)境動態(tài)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java通過wait()和notifyAll()方法實現(xiàn)線程間通信
這篇文章主要為大家詳細(xì)介紹了Java通過wait()和notifyAll()方法實現(xiàn)線程間通信的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
Java簡化復(fù)雜系統(tǒng)調(diào)用的門面設(shè)計模式
Java門面模式是一種結(jié)構(gòu)性設(shè)計模式,它為復(fù)雜系統(tǒng)提供了一個簡單的接口,使得系統(tǒng)的客戶端能夠更加方便地使用系統(tǒng)功能。門面模式通過封裝復(fù)雜的子系統(tǒng),隱藏系統(tǒng)的實現(xiàn)細(xì)節(jié),提高了系統(tǒng)的易用性和靈活性2023-04-04
SpringMVC @RequestMapping注解應(yīng)用方法示例講解
通過@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Spring?Boot?內(nèi)置工具類ReflectionUtils的實現(xiàn)
ReflectionUtils是一個反射工具類,它封裝了Java反射的操作,使得我們能夠更輕松地操作和訪問類的方法、字段,本文主要介紹了Spring?Boot?內(nèi)置工具類ReflectionUtils的實現(xiàn),感興趣的可以了解一下2023-11-11
Spring?Boot集成JavaMailSender發(fā)送郵件功能的實現(xiàn)
spring提供了發(fā)送郵件的接口JavaMailSender,通過JavaMailSender可以實現(xiàn)后端發(fā)送郵件,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot集成JavaMailSender發(fā)送郵件功能的相關(guān)資料,需要的朋友可以參考下2022-05-05
一文了解SpringBoot是如何連接數(shù)據(jù)庫的
Spring Boot提供了一系列的開箱即用的功能和特性,使得開發(fā)人員可以快速構(gòu)建和部署應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于SpringBoot是如何連接數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2023-06-06

