【发布时间】:2014-08-25 10:10:57
【问题描述】:
我正在尝试使用 build-helper-maven-plugin 正则表达式来转换默认属性,然后再将其用于依赖项部分。
我的 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 并传递依赖项覆盖,它将被剥离其前缀并使用而不是默认值。
但是,在验证依赖项之前,这个插件似乎没有运行 - 是否有可能让它工作或者有更好的方法?
【问题讨论】:
-
属性替换在 build-helper-mavne-plugin 运行之前完成。除此之外,为什么要覆盖 jenkins 作业中的依赖项?
-
听起来这个插件如果运行后就不能用了。我想这样做的原因是,特定项目包装了另一个项目(构建多个版本)。我们有一个 Jenkins 构建作业,允许通过其 subversion 标签选择包装的项目。不幸的是,该标签有一个前缀。由于 Maven 发布插件中的错误,我无法在 Jenkins 中使用 shell 来删除它,所以我认为我可以在 pom.xml 中删除它。
-
bug in maven release plugin与使用 shell 脚本的关系是什么意思?以及svn标签和Maven中一个工件的版本之间的关系在哪里? -
发布插件允许一个参数部分 - 我想在这里传递那个参数... -Dbuild.number=${BUILD_NUMBER} -Dbuild.id=${BUILD_ID} -Dresume= false release:prepare release:perform -Darguments="-DP_SOME_VERSION_AS_PASSED_BY_JENKINS=${P_SOME_VERSION}" 但是在 Jenkins 作业的“预步骤”版本中,我通过解析用户输入来创建 P_SOME_VERSION 以去除颠覆标记前缀。 ..或者至少那是我的第一次尝试。似乎一个已知问题意味着扩展不在发布插件的“参数”部分中执行。
-
khmarbaise - 回答您的其他问题。在 Jenkins 作业中,使用由 subversion 参数插件“列出 Subversion tags (and more)”填充的下拉列表选择用户输入。这列出了依赖项目的发布标签。我可以看到使用获取此标记版本的父 Jenkins 作业执行此操作的方法,使用 shell 脚本解析出前缀,然后将其传递给主 Jenkins 作业。因此,我可以完全排除使用 Maven 解析前缀的可能性,因为此时它将是正确的。但我希望避免父母 Jenkins 的工作。
标签: java regex maven ant jenkins