一 本章概述
介绍SpringBoot应用基于Maven实现不同环境的应用打包
二 SpringBoot应用介绍
默认情况下SpringBoot应用都会有一个默认的配置文件application.properties或者是application.yml,
而开发人员在测试部署项目时,通常要切换到不同的环境,而不同的环境会存在不同的配置,例如数据库,redis等等。
这里就可以借助SpringBoot提供的Profile来实现。
2.1 环境规划
环境名称 | 环境说明 |
---|---|
dev | 开发环境 |
fat | 测试环境 |
uat | 集成环境 |
pro | 生产环境 |
2.2 SpringBoot应用配置
在明确环境规划之后准备5个配置文件,分别是application.properties,application-dev.properties,application-fat.properties,application-uat.properties,application-pro.properties。文件的配置内容如下
application.properties
profiles.active是pom.xml中配置profile的变量,用于替换激活的环境
spring.profiles.active=@profiles.active@
application-dev.properties
设定tomcat服务器的端口,开发环境为8099
server.port=8099
application-fat.properties
设定tomcat服务器的端口,测试环境为8089
server.port=8089
application-uat.properties
设定tomcat服务器的端口,集成环境为8079
server.port=8079
application-pro.properties
设定tomcat服务器的端口,生产环境为80
server.port=80
application.properties文件通常用于配置通用的属性,也就是不同环境下的配置项是相同的.例如server.tomcat.uri-encoding=utf-8
而为了区分,这里不同环境的配置采用不同的端口。
2.3 maven打包设置
pom文件中主要针对不同的环境设置对应的profile,其中默认激活的是dev环境的配置
<profiles>
<!-- 定义四个不同环境,分别是开发环境dev,测试环境fat,集成环境uat,生产环境pro-->
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<!-- 默认激活开发环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>fat</id>
<properties>
<profiles.active>fat</profiles.active>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<profiles.active>uat</profiles.active>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
</properties>
</profile>
</profiles>
然后配置需要包含和过滤的application.properties
<build>
<resources>
<!-- 指定打包时需要过滤的文件-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>application-dev.properties</exclude>
<exclude>application-fat.properties</exclude>
<exclude>application-uat.properties</exclude>
<exclude>application-pro.properties</exclude>
</excludes>
</resource>
<!-- 指定打包时需要包含的配置文件-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<!--${profiles.active}会根据指定的profile动态替换-->
<include>application-${profiles.active}.properties</include>
<include>application.properties</include>
</includes>
</resource>
</resources>
</build>
然后使用maven的打包命令实现不同环境打包即可
MacBookPro:springboot tony$ mvn clean package -Dmaven.test.skip=true -P fat
使用 mvn clean package -Dmaven.test.skip=true -P fat表示打包项目,环境为fat。
-P后面的选项可以是之前配置的profile,例如dev,fat,uat,pro。
当打包完成之后解压打包的文件会发现BOOT-INF/class文件下会存在application.properties和@profiles.active@值对应配置,例如application-fat.properties
重要说明:
移动终端更好的阅读方案,关注个人微信公众号: ittimeline,优快云文章内容会实时同步到该公众号中。