使用maven隔离的必要性
- 为什么引入maven隔离
- 代码开发、代码测试、发布版本是我们开发过程中必不可少的三个环节,以数据库为例,生产环境所使用的数据库与测试环境所使用的定不相同,
为解决地址不同的问题,我们一般在同一个配置文件中写好两套环境地址,在使用开发环境时,将生产环境配置注释掉;而在发布正式版本前,
需要将开发环境配置注释掉,使用生产环境地址; - 这样的来回切换,就很容易导致某个测试或打包时忘记切换地址,某取消注释时漏掉某一部分,导致不可挽回的损失;
- 所以我们有必要引入一种机制,将不同环境的配置文件写到不同的文件中,切换开发环境时直接切换配置文件目录,而不是在反复取消注释。
- 代码开发、代码测试、发布版本是我们开发过程中必不可少的三个环节,以数据库为例,生产环境所使用的数据库与测试环境所使用的定不相同,
- 引入maven隔离后的便利性
- maven隔离就是这样一种机制:将不同的配置文件写到不同的文件目录中,可以指定默认使用的开发环境,打包时可以动态指定需要使用哪套配置文件;
- 在IDE中切换配置文件仅仅是点两下鼠标的事。
二、maven隔离的配置方式
- 添加resources节点
- 在pom.xml文件的build子节点下添加resources节点;
- 说明:
- resources节点下可配置多个resource子节点;
- 上图中的第一个resource子节点代表需要动态指定的配置环境,其中${deploy.type}在下一小节中指定;
- 第二个resource子节点代表公共资源。
- 添加profiles节点
- 在pom.xml文件下直接添加profiles节点;
- 说明:
- profiles节点下可配置多个profile子节点,每个profile子节点代表一套配置环境;
- resource节点下使用的${deploy.type}变量是在profile节点中指定,它代表了每个profile的id值。
- 本例中将dev环境设置为默认的配置环境,即:<activeByDefault>true</activeByDefault>
- 对pom文件进行import操作,查看idea右侧“Maven Project”侧边栏,若有如下信息,则代表配置成功:
- 在项目目录:${projectName}/src/main目录下分别建立resouces.dev和resource.prod,后缀与pom.xml下profiles定义的id保持一致
- 在不同的资源目录下分别建立配置文件,并填好相应的配置
- dev配置文件截图:
- 1
- 1
- prod配置文件截图:
-
在idea中若想切换配置文件环境,则直接在“Maven Project”中切换即可
- 切换后的效果为:
- 注意:该项操作需要多点两下鼠标,因为存在“虚选中”这种情况,如下图即是“虚选中”(虚选中的✔️颜色较浅):
- 切换后的效果为:
三、使用maven隔离后的打包方式
- 打包命令: mvn clean package -P evnname
- 举例并验证:
- 若不指定 -P 选项即进行打包,则推测:使用的配置文件为dev,因为dev为默认的配置环境
- 打包命令: mvn clean package
- 使用vim查看jar内配置文件内容:
- 验证成功
- 指定 -Pprod命令,则使用的配置文件为prod
- 打包命令: mvn clean package -Pprod
- 使用vim查看jar内配置文件内容:
- 验证成功
- 若不指定 -P 选项即进行打包,则推测:使用的配置文件为dev,因为dev为默认的配置环境
三、其他说明
- maven隔离的demo在BossData/sneakerX/share目录下,若有需要可进行查看。
- 有趣的尝试:假设有3个profile,在开发时都选中进行测试,程序运行时使用的是哪个profile呢?^_^