覆盖pom.xml上的属性值

时间:2015-03-10 04:50:58

标签: maven jenkins

我的pom.xml中的部分代码如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>${suite.xml}</suiteXmlFile>
        </suiteXmlFiles>
        <properties>
            <property>
                <name>usedefaultlisteners</name>
                <value>false</value>
            </property>
            <property>
                <name>listener</name>
                <value>org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter
                </value>
            </property>
        </properties>
        <testFailureIgnore>true</testFailureIgnore>
        <systemProperties>
            <property>
                <name>org.uncommons.reportng.title</name>
                <value>${title}</value>
            </property>
        </systemProperties>
        <argLine>-Xms128m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m
            -XX:+UseConcMarkSweepGC
        </argLine>
    </configuration>
</plugin>

我从我的jenkins工作发送-Dtitle,它工作正常。同样明智的我想要更改标记<testFailureIgnore>true</testFailureIgnore>中的值。但问题是:我不想更改默认值。我只想在用户从jenkins提供“false”值的情况下参数化。如果用户不提供任何内容,那么它应该是“true”。

3 个答案:

答案 0 :(得分:0)

在pom中创建一个单独的配置文件,您可以在其中提供不同的值。 pom中的插件定义将包含默认值。

因此,如果您运行简单的maven命令:mvn install,它将使用默认值 如果您使用mvn -Pprofile install的配置文件运行,那么它将使用配置文件中指定的值。

答案 1 :(得分:0)

  1. 在您的pom的<maven.test.failure.ignore>true</maven.test.failure.ignore>标记下添加一个属性<properties>
  2. 将行testFailureIgnore行替换为<testFailureIgnore>${maven.test.failure.ignore}</testFailureIgnore>
  3. 如果是&#34; false&#34;你需要传递一个额外的参数-Dmaven.test.failure.ignore=false

答案 2 :(得分:0)

很容易。首先,您必须为您的工作添加一个shell命令。在此命令中,您可以使sed命令替换另一行。

示例:

sed -i's / <maven.test.failure.ignore>true</maven.test.failure.ignore> / <maven.test.failure.ignore>false</maven.test.failure.ignore> / g'pom.xml