基於Maven,優雅的控制SpringBoot配置文件

背景

衆所周知,在軟件開發過程當中,咱們通常會有生產環境,開發環境,測試環境等等,針對這些環境,咱們須要在配置文件對相同的參數,設置不一樣的值,那麼,如何作到簡單、優雅、快速的進行切換呢?spring

解決方案

1、使用SpringBoot原生提供的Profile

首先,咱們知道在SpringBoot中有提供:app

spring:  
 profiles:
  active: pro

這個屬性來選擇對應環境的配置文件,固然也能夠同時設置多個配置文件:工具

spring:  
 profiles:
  active: 
   - pro
   - test

可是有一個問題,這種方式不夠快速簡單,須要每次打包時修改參數值;要麼就是啓動時,增長--spring.profiles.active這個參數;過於麻煩,那麼有什麼方案能夠更簡單呢。測試

2、使用Maven的Profile和SpringBoot的Porfile相結合的方式

咱們一般使用Maven做爲項目構建工具,在Maven中一樣也提供了針對自定義配置信息這一功能,即Profile。ui

咱們的思路以下,在Maveni進行打包時,經過設置Maven的參數,從而控制SpringBoot的Profile。spa

配置以下:code

#這裏只給出主要配置

<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<druid.profiles.active>druid-dev</druid.profiles.active>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>pro</id>
			<properties>
				<druid.profiles.active>druid-pro</druid.profiles.active>
			</properties>
		</profile>
</profiles>

<resources>
			<resource>
				<directory>src/main/resources</directory>
                 #這個必定要加,不然不會進行替換
				<filtering>true</filtering>
			</resource>
</resources>

而後,SpringBoot的yml配置文件以下:xml

spring:  
 profiles:
  active: @druid.profiles.active@

當咱們install(打包)時,只須要設置 -P dev,這樣就能夠設置爲dev環境的配置文件。開發

其它

讓打包後的jar包只包含對應環境的配置文件,在Maven的pom文件中增長以下配置:io

<resources>
#在這個resource中排除全部的yml文件
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>application*.yml</exclude>
				</excludes>
			</resource>
#在這個resource中,根據profile引入對應的配置文件
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>application.yml</include>
#根據profile引入對應的配置文件
					<include>application-${druid.profiles.active}.yml</include>
				</includes>
			</resource>
</resources>
相關文章
相關標籤/搜索