Maven的porfile與SpringBoot的profile結合使用案例詳解
使用maven的profile功能,我們可以實現多環境配置文件的動態切換,可參考我的上一篇博客。但隨著SpringBoot項目越來越火,越來越多人喜歡用SpringBoot的profile功能。但是用SpringBoot的profile功能時,一般我們默認激活的profile肯定是開發環境的profile。當我們打成jar包後,如果在生產環境下運行,就需要在運行這個jar包的命令後面加個命令行參數來指定切換的profile。雖然這樣很方便,但是容易忘記加這個參數。 我們可以通過maven的profile功能和SpringBoot的profile功能結合使用。效果為:當maven打包時通過profile指定配置為test環境的配置,那麼我們SpringBoot裡面默認激活的就是test環境的配置。 這樣我們隻需要打包時指定profile後,直接運行jar就可以,不需要在命令行加參數瞭。這個效果就和我們普通web項目使用maven的profile的效果類似瞭。
一、思路
(1)通過maven的profile功能,在打包的時候,通過-P指定maven激活某個pofile,這個profile裡面配置瞭一個參數activatedProperties,不同的profile裡面的這個參數的值不同
(2)SpringBoot的application.properties文件裡面spring.profiles.active填的值取上面maven的activatedProperties參數值。 這樣能實現的效果為:
示例一:
maven打包命令為 mvn clean package -P test
那麼application.properties裡面的spring.profiles.active值就是maven中 id為test的profile的activatedProperties參數值
示例二:
maven打包命令為 mvn clean package -P product
那麼application.properties裡面的spring.profiles.active值就是maven中 id為product的profile的activatedProperties參數值
二、案例
(1)項目結構介紹 項目結構如下圖所示,是個常見的SpringBoot項目結構,不同環境的propertis文件的後綴不同(見圖中紅框處)
(2)pom文件中配置maven的profile maven的profile的配置見下面代碼 註意:maven的profile中activatedProperties參數值需要和SpringBoot的不同環境Properties文件的後綴一樣。 比如開發環境的Properties的文件名為application-develop.properties,那麼maven中develop的profile裡面的activatedProperties參數值就應該是develop
<profiles> <profile> <!-- 開發 --> <id>develop</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <activatedProperties>develop</activatedProperties> </properties> </profile> <profile> <!-- 測試 --> <id>fuy</id> <properties> <activatedProperties>fuy</activatedProperties> </properties> </profile> <profile> <!-- 生產 --> <id>production</id> <properties> <activatedProperties>production</activatedProperties> </properties> </profile> </profiles>
(3)application.properties中的配置
在application.properties文件中配置SpringBoot默認激活的propertis文件。這時候spring.profiles.active取上面maven的profile裡面配置的activatedProperties的值,這個取值要用@符號來取。具體見下面代碼
spring.profiles.active=@activatedProperties@
(4)如何打包 打包時用 mvn clean package -P profile的id 如果不加-P參數,那麼默認就是<activeByDefault>true</activeByDefault>所在的profile
(5)效果圖 當我們打包命令為mvn clean package -P production時,解壓後的jar包中application.properties配置文件中spring.profiles.active的值自動變成瞭production
三、小結
(1)該方式優點:打包後不需要通過命令行參數來切換不同環境的配置文件,把指定環境的這一步放到瞭maven打包的命令上
(2)該方式其實是利用瞭maven的profile功能和SpringBoot的profile相結合使用
四、參考鏈接
(1)https://www.cnblogs.com/zeng1994/p/a442108012ffd6a97b22c63055b48fe9.html
(2)http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/
到此這篇關於Maven的porfile與SpringBoot的profile結合使用詳解的文章就介紹到這瞭,更多相關Maven的porfile與SpringBoot的profile使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springboot配置文件讀取pom文件信息方式
- 詳解Maven profile配置管理及激活profile的幾種方式
- maven的pom.xml中profiles的作用詳解
- 使用maven的profile構建不同環境配置的方法
- SpringBoot-application.yml多環境配置詳解