这是本文档旧的修订版!
同一个项目使用同一个pom.xml来构建不同的环境时候,比如:本地环境(local)日志输出目录:D:/logs/record/record.log,而测试环境(test)日志输出目录:/home/gxx/logs/record/record.log;又比如:本地环境(local)使用数据源1,而测试环境(test)使用数据源2。
<!-- 使用 mvn clean install -P XXX 激活profile --> <profiles> <profile> <id>local</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <deploy.environment.include>local</deploy.environment.include> <deploy.environment.exclude>test</deploy.environment.exclude> <log4j.dir>D:/logs/record/record.log</log4j.dir> </properties> </profile> <profile> <id>test</id> <properties> <deploy.environment.include>test</deploy.environment.include> <deploy.environment.exclude>local</deploy.environment.exclude> <log4j.dir>/home/gxx/logs/record/record.log</log4j.dir> </properties> </profile> </profiles>
其中两个profile表示两个环境,local为本地环境,test为测试环境,<activeByDefault>true</activeByDefault>表示默认环境,<properties>内的值为相应环境下配置的值,不管在properties或者xml或者pom.xml中都可以取出这些值,取的方法是:${属性值},比如${deploy.environment.exclude}和${log4j.dir},具体用法如下:
<!-- 拷贝资源 --> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/application-${deploy.environment.exclude}-profile.xml</exclude> </excludes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources>
#RollingFile滚动日志 log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingFile.File=${log4j.dir} log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
mvn clean install #默认local 因为id为local的profile中配置<activation> <activeByDefault>true</activeByDefault> </activation> mvn clean install -P local #选择本地环境 mvn clean install -P test #选择test环境