Maven Profile 环境隔离
作用
快速切换不同的配置环境,比如开发时是连接的本地数据库,发布线上时是另外的数据库,每次编译打包时都要修该配置文件比较麻烦,这时就可以使用环境隔离了。
配置
本地(Local), 开发(Dev), 测试(Beta), 线上(Prod)
pom.xml 配置
<build> <!--按照激活的环境加载资源--> <resources> <resource><!--私有配置目录,用变量名来区分--> <directory>src/main/resources.${deploy.type}</directory> <excludes><!--排除jsp文件--> <exclude>*.jsp</exclude> </excludes> <filtering>true</filtering><!--开启过滤,用指定的参数替换 directory 下的文件中的参数(eg. ${name})--> </resource> <resource><!--公共配置目录--> <directory>${project.basedir}/src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.yml</include> <include>**/*.properties</include> <include>static/**</include> <include>templates/**</include> </includes> <filtering>true</filtering> </resource> </resources> </build> <profiles> <profile> <id>dev</id> <activation><!--默认环境--> <activeByDefault>true</activeByDefault> </activation> <properties><!--对应变量名--> <deploy.type>dev</deploy.type> <boot-main>org.webapp.MyWebApplication</boot-main> <package-name>${project.artifactId}-${project.version}</package-name> </properties> </profile> <profile> <id>beta</id> <properties> <deploy.type>beta</deploy.type> </properties> </profile> <profile> <id>prod</id> <properties> <deploy.type>prod</deploy.type> </properties> </profile> </profiles>
对应的工程目录结构
编译打包
#不编译测试用例类,打包dev环境,改变-P的参数即可切换环境 mvn clean package -Dmaven.test.skip=true -Pdev
http://maven.apache.org/plugins/maven-resources-plugin/index.html