【发布时间】:2014-03-20 12:23:43
【问题描述】:
我想根据环境使用属性文件中具有不同值的变量。 我想在我的 pom.xml 中使用该变量。
【问题讨论】:
-
可以举一个你喜欢做什么的真实例子吗?最好的办法是显示您的完整 pom 文件以及您迄今为止尝试过的内容以及哪些内容没有按您的预期工作。
我想根据环境使用属性文件中具有不同值的变量。 我想在我的 pom.xml 中使用该变量。
【问题讨论】:
在您的 pom 中添加一组适当的 <profile> 条目,并将您需要的变量包含在 <properties> 列表中:
<profile>
<id>Dev</id>
<properties>
<proxyServer>dev.proxy.host</proxyServer>
<proxyPort>1234</proxyPort>
</properties>
</profile>
<profile>
<id>QA</id>
<properties>
<proxyServer>QA.PROXY.NET</proxyServer>
<proxyPort>8888</proxyPort>
</properties>
</profile>
<profile>
<id>Prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<proxyServer>PROD.PROXY.NET</proxyServer>
<proxyPort>8080</proxyPort>
</properties>
</profile>
请注意,Prod 个人资料已被标记:<activeByDefault>。
在属性文件中,使用 pom 风格的变量划分来添加变量值占位符,匹配 pom 中使用的 <property> 标签名称:
proxyServer=${proxyServer}
proxyPort=${proxyPort}
在 pom 的 <build> 部分中,添加一个 <resources> 条目(假设您的属性位于 src/main/resources 目录中),包含一个 <filtering> 标记,并设置值到:true:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>settings.properties</include>
</includes>
</resource>
</resources>
然后,当您运行 Maven 构建时,划分的属性值将替换为 pom <profile> 条目中定义的值。
【讨论】: