maven profile多环境自动切换配置,配置分离,排除文件
痛点:
在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同。
在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部署到相应的环境上。
但是这样很容易出现问题,因为很容易出现少改或者漏改,造成不必要的麻烦
幻想:
要是有一种东西,能让我们打war的时候指定一个参数,就能自动把项目编译成对应环境的war,那该有多幸福啊!!!
结果:这样的东西还真有,那就是maven-profile
一、项目src/main/resources目录下建立相对应的目录
我建立了三个目录,分别是:dev,test,pro分别表示开发环境,测试环境,生产环境。当然还可能有更多的环境。针对不同的环境,我们的配置文件可能会有不同的设置,比如我的需求是,三个环境的项目常量设置,数据库连接设置,log设置都可能不同。
那我就分别在三个文件中配置了不同设置,在外面也有三个相对应的文件,其实在开发的过程中外面的三个和dev里面的三个应该是相同的。
公共配置直接放到src/main/resources下
二、POM中的配置
1 <profiles> 2 <!--本地开发环境--> 3 <profile> 4 <id>dev</id> 5 <properties> 6 <profiles.active>dev</profiles.active> 7 </properties> 8 <activation> 9 <activeByDefault>true</activeByDefault> 10 </activation> 11 </profile> 12 <!--测试环境--> 13 <profile> 14 <id>test</id> 15 <properties> 16 <profiles.active>test</profiles.active> 17 </properties> 18 </profile> 19 <!--生产环境--> 20 <profile> 21 <id>pro</id> 22 <properties> 23 <profiles.active>pro</profiles.active> 24 </properties> 25 </profile> 26 </profiles> 27 28 <!--build部分--> 29 <build> 30 <finalName>xxx</finalName> 31 <sourceDirectory>src/main/java</sourceDirectory> 32 <testSourceDirectory>src/test/java</testSourceDirectory> 33 <resources> 34 <resource>
<!--项目的默认资源目录,但是要排除不必要的文件,想要指定加入的再下面的resource指定-->
35 <directory>${project.basedir}/src/main/resources</directory> 36 <excludes> 38 <exclude>dev/*</exclude> 40 <exclude>pro/*</exclude> 41 <exclude>test/*</exclude> 43 </excludes> 44 </resource> 49 <resource> 50 <directory>${project.basedir}/src/main/resources/${profiles.active}</directory> 51 <includes> 52 <include>**/*.xml</include> 53 </includes> 54 <!--是否替换资源中的属性--> 55 <filtering>true</filtering> 56 </resource> 57 </resources> 58 ... 59 </build>