多环境配置
1、背景与问题
虽然spring-boot与spring-cloud家族有默认的parent pom,但是由于spring-boot和spring-cloud系列更新太过频繁,所以对于一个技术团队而言,设置自己的独有的parent才能做到整个项目亦或整个团队的版本统一,技术统一。
2、架构与思想
2.1、MAVEN BOM
如果你只听过maven的pom,但是你没听过maven的bom的话,而且你还在用spring技术体系的话,那么你非常强烈建议你去了解bom。
使用BOM可以让使用者在子pom.xml声明依赖的时不需要指定版本号,最重要的是可以解决依赖冲突。
而不幸的是 spring 系列相关的依赖经常冲突,不用bom能行么?
2.2、依赖版本统一定义版本
在parent的pom.xml文件里定义了所有的版本变量,这样可以只关注此区域,不用再看下面,因为下面<dependencies>
节点里很长,翻阅起来很累又不易查看,而且随着系统的变大也会越来越长,但是<properties>
节点不会。
xml
<properties>
<java.version>1.8</java.version>
<springboot.version>2.7.5</springboot.version>
<spring-mock.version>2.0.8</spring-mock.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<p6spy.version>3.8.6</p6spy.version>
...
</properties>
三、多环境
3.1、maven profile多环境
笔者认为所有的项目都应该有以下四个环境:
- 开发环境 (dev,用于写代码)
- 测试环境 (test,测试人员测试)
- 预发布环境(pre, 真实的数据,最真实的生产环境)
- 生产环境(prod, 生产环境)
默认为dev环境,即开发环境。
配置如下:
xml
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>sit</id>
<properties>
<profiles.active>sit</profiles.active>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<profiles.active>pre</profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
3.2、目录resources
因为使用了maven profile,所以必须在resources目录下建立不同环境的配置文件夹,如下图。
java
--------\src\main\resources
--------\src\main\resources\dev
--------\src\main\resources\test
--------\src\main\resources\pre
--------\src\main\resources\prod
3.3、 打包配置build
maven profile的打包核心是对配置文件的过滤,如下
xml
<finalName>${profiles.active}-${project.name}</finalName>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>dev/*</exclude>
<exclude>test/*</exclude>
<exclude>pre/*</exclude>
<exclude>prod/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
<filtering>true</filtering>
<includes>
<include>*.yaml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
<filtering>false</filtering>
<includes>
<include>*.*</include>
</includes>
</resource>
</resources>
联系我们
1024创新实验室-主任:卓大,混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024创新实验室 致力于成为中原领先、国内一流的技术团队, 以AI+数字化为驱动,用技术为产业互联网提供无限可能, 业务如下:
- 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
- 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
- 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
- AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大 拉你入群,一起学习 | 公众号 :六边形工程师 分享:赚钱、代码、生活 | 请 “1024创新实验室” 烩面里加肉 咖啡配胡辣汤,提神又饱腹 | 抖音 : 六边形工程师 直播:赚钱、代码、中医 |