spring-boot 配置构建不同运行环境

概述

   按照项目开发的流程,项目工程需要经历开发人员本地测试环境(dev),进入测试阶段后有测试环境(test),测试无误后需要将程序发布到生产环境(production)下,而对于这三个不同的项目环境,应用程序要在该环境下运行,必须有不同的配置项,如开发和生产环境使用不同的数据库地址,不同的线程池参数,因此需要对不同的项目环境进行不同的配置,为了简化和规范这些参数配置,需要对其进行统一规范管理。

三个环境变量的配置文件分别为

application-dev.properties : 开发环境配置文件
application-test.properties : 测试环境配置文件
application-prod.properties : 正式环境配置文件

各个环境需要读取相应的配置文件。

一、在 application.properties 文件中添加属性  

# 通过读取运行环境变量,当使用 mvn -P dev 打包时,profileActive=dev这个属性生效,将替换配置文件中的 @profileActive@ 属性为dev
spring.profiles.active=@profileActive@

二、先在pom.xml 配置运行的各个环境数据信息

<!-- 配置运行环境 -->
	<profiles>
		<!-- 开发环境 -->
		<profile>
			<id>dev</id>
			<properties>
				<!-- 通过读取运行环境变量,当使用 mvn -P dev 打包时,profileActive=dev这个属性生效,将替换配置文件中的 @profileActive@ 属性为dev-->
				<profileActive>dev</profileActive>
			</properties>
			<activation>
				<!-- 默认启用开发环境 -->
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>

		<!-- 演示环境 -->
		<profile>
			<id>test</id>
			<properties>
				<profileActive>test</profileActive>
			</properties>
		</profile>

		<!-- 正式环境 -->
		<profile>
			<id>prod</id>
			<properties>
				<profileActive>prod</profileActive>
			</properties>
		</profile>
	</profiles>

在POM.xml中配置3个profile,对应项目所处的3个不同的环境-dev, test, production, profile的id属性即为每个环境赋予一个唯一的标示,<properties>元素的内容则是以key-value的形式出现的键值对,如我们定义了一个变量<env>,其值在不同的环境下(不同id)被赋予了不同的值(dev, production, test),要激活不同的环境打包,我们可以在命令行通过mvn package –P ${profileId}来让其运行,为了开发便利,默认激活的是dev开发环境,即开发人员不需要通过命令行手动输入-p参数也能运行dev环境的打包。

三、定义filter(由filter插件完成此操作)

可以使用Maven来对项目资源进行变量替换。在资源过滤被激活的时候,Maven会扫描资源,寻找由${}包围的Maven属性的引用
一旦它找到这些引用,它就会使用合适的值去替换它们,当需要根据目标部署平台使用不同的配置来参数化一个构建的时候,这就非常有用。

通常一个在src/main/resources目录下的.properties文件或者XML文档会包含对外部资源的引用,如需要根据目标部署平台进行不同配置的数据库或网络地址。
例如,一个从数据库读取数据的系统有一个XML文档,其包含了数据库的JDBC URL以及安全凭证。如果你在开发和产品环境使用不同的数据库,使用Maven Profile来为不同的部署环境定义不同的配置。

Filter的配置(在<build>元素下添加节点)如下:

    配置需要被替换的资源文件地址

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

<build>
    <resources>
			<resource>
				<!-- 指定打包时,需要处理的文件 -->
				<directory>src/main/resources</directory>
				<!-- 处理文件时需要对文件变量进行替换 -->
				<filtering>true</filtering>
				<!-- 指定打包时,不需要包含以下文件 -->
				<excludes>
					<exclude>application-dev.properties</exclude>
					<exclude>application-test.properties</exclude>
					<exclude>application-prod.properties</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
				<!-- 指定打包时包含以下文件, ${profileActive}会根据指定的profile进行替换-->
				<includes>
					<include>application-${profileActive}.properties</include>
					<include>application.properties</include>
				</includes>
			</resource>
    </resources>
</build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值