乐哉码农
产生问题的背景
由于在项目开发的时候,我们一般都是使用的本地库,数据库连接写的是本地的,如果我们将项目打成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不开启
感谢大家能看到这里,文中讲的不正确的地方,欢迎在下方留言,我会及时修正。
欢迎大家关注我的公众号,会不定时更新技术干货。
乐哉码农