前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用MAVEN的profile 实现打包环境的切换

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

作者头像
AI码师
发布2020-11-19 16:16:37
9720
发布2020-11-19 16:16:37
举报

乐哉码农

产生问题的背景

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

引入Maven的profile

首先介绍下profile:

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

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

具体实现步骤

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

数据库默认配置

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

jdbc配置文件

jdbc-product

jdbc-dev

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

两套profile,

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

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

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

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

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

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

配置讲解:

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

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

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

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

感谢大家能看到这里,文中讲的不正确的地方,欢迎在下方留言,我会及时修正。

欢迎大家关注我的公众号,会不定时更新技术干货。

乐哉码农

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哉开讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档