为了账号安全,请及时绑定邮箱和手机立即绑定

利用MAVEN的profile 实现打包环境的切换

标签:
Java

webp

乐哉码农


产生问题的背景

由于在项目开发的时候,我们一般都是使用的本地库,数据库连接写的是本地的,如果我们将项目打成war的时候,里面的配置连接写的是我们本地的,当我们直接把war拷贝到服务器上面进行部署的时候,是不可能直接用的,这时候可能会有两种方法,一、在打包的时候修改数据库连接,这样我们就可以直接把war放到服务器上面,二是把压缩包拷贝到服务器上面,再修改,这样会给每次进行升级系统带来麻烦,这同样就需要一个工具帮我们去解决这些问题了,实现正式和测试环境的切换

引入Maven的profile

首先介绍下profile:

profile就是帮助我们定义一些配置,这些配置都是一套一套的,在特定的情况下动态被激活使用,也可以提供默认的属性去激活默认的一套profile,

这里主要是通过profiles创建两套profile和利用filters,resources实现配置文件的覆盖,实现环境的切换,具体步骤如下

具体实现步骤

一、首先看下默认的数据库配置文件,配置文件在resources的根目录下面

webp

数据库默认配置

二、接着我们复制出两套配置文件出来

webp

jdbc配置文件


webp

jdbc-product


webp

jdbc-dev

三、配置好数据库配置文件,我们需要在pom文件中建立对应的两套profile配置,

webp

两套profile,

其中的env标签,是一个环境变量,我们后面会要用到,他有一个默认值是在这里面配置的,默认是dev

webp

配置好上面的两个profile之后,会在idea面板中看到

webp

四、配置好定义文件之后,我们需要使用filters和resources来实现配置件变量的覆盖

    Ⅰ.首先定义filters来配置使用哪个文件中的变量去替换现有的配置文件中的占位符

webp

这里面的env就是配置的环境变量,这个值随着我们打包是勾选dev还是product动态改变的,例如和勾选dev.则用jdbc-dev里面的值去替换数据库配置文件中的占位符,例如 jdbc-dev.properties中有一个  username=lezai,则会将当前项目资源中的文件中带有${USERNAME}占位符直接使用jdbc-properties中的值替换掉

Ⅱ.替换制定资源的文件中的占位符,使用到resources。直接看配置

webp

配置讲解:

①使用resources的includes 将打包是需要的配置文件打包进来,因为我们这里需要进行占位符替换,所以我只导入xml文件,然后将filtering设置为true,意思使用上面定义占位符过滤替换,使其生效,

②使用resources的excludes将第一步骤中排除的非xml文件导进来,但是此时不开启filtering为true,也就是需要对这些文件的占位符进行替换


五、只需要这几步就可以在部署系统时进行不同环境的切换,使用方法是打包时勾选不同的profile 

webp

六、配置就这几步,很轻松的事件了环境的切换,特别注意的是最后一步,首先将需要进行占位符替换的使用includes包进来,并且开始filtering,最后再使用excludes将除了上面的文件包进来,filtering不开启



作者:乐哉码农
链接:https://www.jianshu.com/p/ff716c7183cc


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消