我实现了类似的操作,但是将变量
pom.xml放在properties文件中。因此,我的属性文件中的变量将由Maven在包装中更改。
首先,我在pom的profiles部分中定义了这些var:
<profiles> <profile> <id>dev</id> <activation><activeByDefault>true</activeByDefault></activation> <properties> <props.debug>true</props.debug> <props.email>false</props.email> <what.ever.you.want>value for dev profile</what.ever.you.want> </properties> </profile> <profile> <id>prod</id> <properties> <props.debug>false</props.debug> <props.email>true</props.email> <what.ever.you.want>value for prod profile</what.ever.you.want> </properties> </profile></profiles>
然后激活行家对资源的处理和过滤。因此,在您的构建部分中:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
最后,我可以在属性文件,配置文件中包含“ vars”。例如,在我的项目中,我有一个
email.properties用于配置电子邮件发送的文件。属性“
sendEmail”指示我是否必须发送电子邮件(产品配置文件)或在调试中将其打印(开发配置文件)。使用dev
profile时,此var将被设置为false,而使用prod profile时,该属性将具有真实值。
sendEmail=${props.email}这不仅适用于属性文件,还适用于XML(我猜每个文本文件都适用)
缺点是:
- 部分配置分散在pom文件中
- Maven包装更持久(因为过滤)
- 将vars放入XML文件会使它们在语法上错误(因为字符$)



