Maven build-helper-maven-plugin正则表达式无法将属性用作dependency.version

时间:2014-08-25 10:10:57

标签: java regex maven ant jenkins

我正在尝试使用build-helper-maven-plugin regex在依赖项部分中使用之前转换默认属性。

我的pom.xml文件属性部分看起来像这样......

<properties>
    <some.version>114.6.9</some.version>
</properties>

我的pom.xml文件构建插件部分看起来像......

    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.9</version>
            <executions>
                <execution>
                    <id>regex-property</id>
                    <goals>
                        <goal>regex-property</goal>
                    </goals>
                    <configuration>
                        <name>some.version</name>
                        <value>${P_SOME_VERSION_AS_PASSED_BY_JENKINS}</value>
                        <regex>^dirtyPrefix-(\S*)</regex>
                        <replacement>$1</replacement>
                        <failIfNoMatch>false</failIfNoMatch>
                    </configuration>
                </execution>
            </executions>
        </plugin>

我的pom.xml依赖版看起来像......

<dependencies>
    <dependency>
        <groupId>someArtifactGroup</groupId>
        <artifactId>someArtifact</artifactId>
        <version>${some.version}</version>
    </dependency>
</dependencies>

这个想法是,如果使用Jenkins并传递依赖性覆盖,它将被剥离其预修复并使用而不是默认值。
但是看起来这个插件在依赖关系被验证之前没有运行 - 是否可以使这个工作或者有更好的方法?

1 个答案:

答案 0 :(得分:0)

我当时也处于类似的情况,但是用-D覆盖不是解决方案(请不要问),而且由于我有几个变量,配置文件也不是。

在我的情况下是这样的: fabric8 docker maven插件使用一个变量。 该变量由“ build-helper-maven-plugin”正则表达式属性生成。

如果调用了“ mvn docker:build”,则不使用验证阶段,也不存在变量(因此我得到了“ $ {blabla}”文字),并且构建失败。 如果我调用通常的构建,则会创建变量。

我采取了执行“ mvn validate docker:build”而不是“ mvn docker:build”的策略来强制执行验证步骤,因此创建了变量。