Maven 2:使用条件替换值运行maven-replacer-plugin?

时间:2011-12-08 23:17:09

标签: maven replace jenkins

我已将pom.xml设置为在prepare-package阶段对文件进行基本替换:

<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>maven-replacer-plugin</artifactId>
    <version>1.3.8</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>replace</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <file>target/classes/plugin.yml</file>
        <replacements>
            <replacement>
                <token>maven-version-number</token>
                <value>${project.version}-${project.build.number}</value>
            </replacement>
        </replacements>
    </configuration>
</plugin>

但是,我希望该值取决于是否设置了特定的环境变量。我通过Jenkins运行构建,所以我想检查是否设置了环境变量BUILD_NUMBER;如果是这样,它应取代project.build.number

在replacer插件中有没有方便的方法呢?我读过usage guide,找不到任何立即有用的东西。

1 个答案:

答案 0 :(得分:3)

您可以使用配置文件执行此操作。

使用类似以下属性的内容:

<properties>    
    <!-- The default build number if the env var is not set -->
    <build.number.to.use>0</build.number.to.use>
</properties>

定义您的replacer插件插件以使用$ {build.number.to.use}:

...
<configuration>
    <file>target/classes/plugin.yml</file>
    <replacements>
        <replacement>
            <token>maven-version-number</token>
            <value>${project.version}-${build.number.to.use}</value>
        </replacement>
    </replacements>
</configuration>
...

定义设置环境变量时激活的配置文件:

<profiles>
    <profile>
        <id>build-number-is-set</id>
        <activation>
          <property>
            <name>env.BUILD_NUMBER</name>
          </property>
        </activation>
        <properties>
            <build.number.to.use>${env.BUILD_NUMBER}</build.number.to.use>
        </properties>
    </profile>
</profiles>