IDEA + maven profile 一站式搞定程序调试和打包过程中的配置信息

目录

0. 前言

1. 目标

2. 环境准备

3. 实验落地

3.1 为项目的pom文件添加配置

3.2 为springboot模块编写代码

3.3 maven打包测试

3.4 项目开发阶段使用统一的环境配置

4. 小结

参考资料


0. 前言

前段时间接手了一个项目代码,写得咋样我就不吐槽了,有过这种经历的人都懂得。这个项目的配置信息是分成了多套的,开发、测试、生产等多个环境都有自己的配置信息,就像下图展示的这样

这是一个springboot多模块项目,每个模块下面都有多个application.yml配置文件。如果是单模块项目的话,那我们还可以通过在springboot的配置文件(application.properties、application.yml)中修改spring.profile配置项的方法确定要使用哪个配置文件,且只需要修改这一份配置文件就可以了,工作量不大,是可以接受的。但是如果是多模块项目的话,每个项目都有这么多个配置文件,那如果我再通过修改spring.profile配置项来切换配置,那我就得把每个springboot模块的配置文件都修改一遍。如果开发、测试等环境的数据库连接、redis连接等配置信息改变了的话,那我也需要把每个springboot模块的环境配置信息都修改一遍。如果项目中的springboot模块数量超过10个,相信我,光修改这些配置的工作量就能让你不胜其烦。

既然这个问题如此蛋疼,那有没有办法能够解决这个问题呢?肯定有的,要不然就不会有本文了。最简单的解决办法,是使用springcloud的config server,即配置中心功能。这方面的内容大家可以自行去百度查找相关资料学习,资料很多,这里就不再啰嗦了,不是本文的重点。对于没有用上springcloud框架的项目,自己造轮子,写一个配置中心,那也需要花费我们很多的功夫。所以解决这种问题最适合的方法,还是使用别人已经提供的轮子最省时省力省心。

我相信现在很多项目都是基于maven或者gradle构建的,而用maven构建的项目应该还是绝大多数。所以本文就通过maven的profile功能,配合IDEA开发工具,来实现配置信息的一站式管理和维护。

嫌看文章麻烦啰嗦的大神,可以直接去看本文所涉及的代码。下面是码云仓库地址

https://gitee.com/zectorlion/MavenMultiProfileSpringboot

 

1. 目标

本着“偷懒至上”的原则,我们的目标是……没有蛀牙!咳咳,不好意思激动了。我的想法是,在一个多模块的maven项目中,所有的模块都只有一个配置文件,每个模块的配置文件中先提前写好占位符。我们将多个环境的配置信息保存到多个properties文件中,通过maven的profile标签和filters标签以及env属性功能来决定使用哪一个环境的配置信息。然后通过maven的占位符替换功能,将项目中每个模块的配置文件中的占位符替换成相关的配置信息。如此一来,我们就实现了在一处维护管理多个环境的配置信息,并且只需要决定激活profile中的哪一个env属性,就能够实现在调试程序模块打包的时候,所有模块配置信息的统一切换。再也不用把所有模块的配置信息都改一遍了,省事儿太多了。

下面我们就通过一个springboot多模块的maven项目来说明一下,如何实现配置信息的“一处修改,多处应用”。

2. 环境准备

首先给大家交代一下我所使用的系统环境和对应的版本,避免大家在版本号的问题上踩坑。

- springboot:2.1.4.RELEASE

- maven:3.6.1

- 谷歌浏览器:76.0.3809.132(正式版本) (64 位)
 

本文用于演示说明的项目,项目结构如下图所示

MavenMultiProfileSpringboot项目下面有springboot1、springboot2、springboot3这几个子模块,springboot3模块下面有一个springboot3-subapp子模块。这样我们就构建了一个包含1级和2级模块的maven项目。springboot1,springboot2和springboot3-subapp这几个模块都是springboot应用。每个模块只包含一个application.yml配置文件,配置文件中包含spring.datasource的三个配置项,分别是url,username和password,每个配置项的值都是占位符。

然后我们将开发、测试、生产这三个环境的配置文件集中放置在MavenMultiProfileSpringboot项目的src/main/filters目录下面

图中名称以filter开头的这三个文件就是整个项目统一使用的配置信息文件,分别代表开发、测试和生产这三个不同环境的jdbc配置信息。开发过类似项目的小伙伴都懂得。每一个文件中都包含有项目中springboot模块所需要的那三个datasource配置项。

至此,我们的实验环境就准备好了。下面我们就通过一步一步的试错,来给

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值