【问题标题】:Using variables in pom.xml在 pom.xml 中使用变量
【发布时间】:2014-03-20 12:23:43
【问题描述】:

我想根据环境使用属性文件中具有不同值的变量。 我想在我的 pom.xml 中使用该变量。

【问题讨论】:

  • 可以举一个你喜欢做什么的真实例子吗?最好的办法是显示您的完整 pom 文件以及您迄今为止尝试过的内容以及哪些内容没有按您的预期工作。

标签: maven variables pom.xml


【解决方案1】:

您正在寻找Maven Resource Filtering

使用资源过滤时需要遵循 3 个步骤:

第 1 步:

在您的 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 个人资料已被标记:&lt;activeByDefault&gt;

第 2 步:

在属性文件中,使用 pom 风格的变量划分来添加变量值占位符,匹配 pom 中使用的 &lt;property&gt; 标签名称:

proxyServer=${proxyServer}
proxyPort=${proxyPort}

第 3 步:

在 pom 的 &lt;build&gt; 部分中,添加一个 &lt;resources&gt; 条目(假设您的属性位于 src/main/resources 目录中),包含一个 &lt;filtering&gt; 标记,并设置值到:true:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>settings.properties</include>
        </includes>
    </resource>
</resources>

然后,当您运行 Maven 构建时,划分的属性值将替换为 pom &lt;profile&gt; 条目中定义的值。

【讨论】:

  • 感谢您的详细回复,但如果我不想使用配置文件,还有其他方法吗?这是目录结构: src/main/resources/dev/configservice.properties ; src/main/resources/test/configservice.properties; src/main/resources/prod/configservice.properties 我在每个 .properties 文件中都有一个 deployUrl 变量。我正在使用 properties-maven-plugin 来获取该变量的值,但问题是如何区分不同环境中的值?
  • @user3293916,有多个选项可供您选择。您希望如何向 Maven 传达应该使用哪些属性文件?命令行参数?环境变量?文件的内容?如果您能给我这些问题的答复,我可以帮助您继续前进……
  • 感谢肖恩的帮助。我的第一个偏好是使用文件的内容,第二个是使用环境变量。
  • @user3293916 您还需要这方面的帮助吗?我病了,卧床不起;如果您仍然需要任何帮助,请继续跟进 -
猜你喜欢
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2017-12-22
  • 2022-01-09
  • 2018-10-19
相关资源
最近更新 更多