在企业级开发中,一般至少有三套环境,本地开发环境,测试环境,正式环境(有的还有预发环境),不同环境的配置文件的内容不同,像数据库连接,三方接口的测试路径与正式路径的区分等等,手动修改不仅耗时,还容易出错。因此很有必要进行环境隔离,下面我们开始配置maven环境隔离。
第一步:在pom文件的build 节点下新增resources节点,具体如下
1 <resources> 2 <resource> 3 <directory>src/main/resources.${deploy.type}</directory> 4 <excludes><!-- 前后端分离的项目 这里的排除项则无需配置 --> 5 <exclude>*.jsp</exclude> 6 </excludes> 7 </resource> 8 <resource> 9 <directory>src/main/resources</directory><!-- 这里表示公共配置的 路径--> 10 </resource> 11 </resources>
第二步:build同级下新增profiles节点,具体如下
1 <!--idea 里面刷新maven project 并勾选默认开发环境 --> 2 <profiles> 3 <profile> 4 <id>local</id> 5 <activation> 6 <activeByDefault>true</activeByDefault> <!--默认环境 --> 7 </activation> 8 <properties> 9 <deploy.type>local</deploy.type> 10 </properties> 11 </profile> 12 <profile> 13 <id>test</id> 14 <properties> 15 <deploy.type>test</deploy.type> 16 </properties> 17 </profile> 18 <profile> 19 <id>prod</id> 20 <properties> 21 <deploy.type>prod</deploy.type> 22 </properties> 23 </profile> 24 </profiles>
第三步:在项目路径下新建三个源文件夹及配置文件,同时公共配置保留在src/main/resources路径下,如下图的common.properties文件
分别执行 mvn clean package -Dmaven.test.skip=true -Plocal, mvn clean package -Dmaven.test.skip=true -Ptest, mvn clean package -Dmaven.test.skip=true -Pprod
若我们mvn命令不接环境参数则默认使用local环境。从target文件夹下可以查看到不同的编译后的配置环境,实现了maven的环境隔离,小伙伴们快去试一下吧。
有些有强迫症的小伙伴可能看着这个项目文件结构非常不舒服,因为它好像打乱了我们正常maven项目的结构目录,下面我们更换一点配置 更加优雅的实现maven的环境隔离。我们之间在resources下建立config目录,再建立三个环境的目录,并加上相应的配置环境,同时修改配置pom文件,具体见下图
mvn命令同上,经验证 也实现了环境隔离,并且文件目录结构看起来也更加舒服了。