maven定义profile无法替换property属性值

1. 场景 最近开发一个web项目,用的maven构建,建立多个profile,对应不同环境,分别包含不同的配置,在打包的时候发现,xml和properties配置文件没有被替换为profile下定义的property属性值。 2. 解决方案: WEB工程需要war插件,启用web资源目录的filter功能,而普通jar不需要。步骤如下: 1、定义profile和各个property属性值 2、定义maven-war插件,并确认webresource文件目录 3、开启filter功能 4、执行clean package -P(profile-id) 命令,可以正常替换web资源目录下的形如${}的变量 3. 示例 3.1. 定义profile 定义dev和uat两个profile,分别对应开发环境和uat环境: <profiles> <profile> <id>dev</id> <properties> <!-- 数据库相关配置--> <mysql.jdbc.url>192.168.1.224:3306/cd_pro</mysql.jdbc.url> <mysql.jdbc.username>root</mysql.jdbc.username> <mysql.jdbc.password>xxxxxx</mysql.jdbc.password> <!-- 环境配置 --> <application.context.ip>http://192.168.1.224/</application.context.ip> <site.id>510100</site.id> <!-- 支付相关配置--> <revisa.pay.service.id>123456</revisa.pay.service.id> <!--LOG4J日志级别--> <log4j.log.level>debug</log4j.log.level> <log4j.logfile.path>D:/logs/cd_pro.log</log4j.logfile.path> <memorycache.url>192.168.1.224:11211</memorycache.url> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>uat</id> <properties> <!-- 数据库相关配置--> <mysql.jdbc.url>10.150.39.21:3306/cd_pro</mysql.jdbc.url> <mysql.jdbc.username>root</mysql.jdbc.username> <mysql.jdbc.password>xxxxxx</mysql.jdbc.password> <!-- 环境配置 --> <application.context.ip>http://uat.zaichengdu.com/</application.context.ip> <revisa.pay.site.id>510100</revisa.pay.site.id> <!-- 支付相关配置--> <revisa.pay.service.id>123456</revisa.pay.service.id> <!--LOG4J日志级别--> <log4j.log.level>info</log4j.log.level> <log4j.logfile.path>/data/logs/cd_pro.log</log4j.logfile.path> <memorycache.url>10.150.38.106:11211</memorycache.url> </properties> </profile> </profiles> 3.2. war插件配置和web资源目录定义 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webResources> <resource> <!-- this is relative to the pom.xml directory --> <directory>src/main/resources</directory> <targetPath>WEB-INF/classes/</targetPath> <filtering>true</filtering> </resource> </webResources> </configuration> </plugin> ...

2017-04-03 · 1 min · 113 words · Hank