maven 2.2.1发布准备自定义标记格式

时间:2013-03-17 17:05:22

标签: maven release

我工作场所的配置管理团队要求人工制品的4位数版本号 - 例如1.2.3.4 - 发布的人工制品和1.2.3.5-SNAPSHOT用于开发pom

除此之外,我们的版本控制系统(clearcase)具有预标签触发器,可强制执行标签/标签的某种命名约定。

因此,如果pom版本是1.2.3.4-SNAPSHOT,而artifactId例如是shopcart,那么根据标签命名要求,标签名称应为:

XXX_1.2.3_SHOPCART_DROP4_SRC

其中XXX是项目代码 - 常量字符串值。

如您所见,为了实现此格式,我需要对标记名称格式进行以下自定义:

  • artifactId - 转换为大写
  • 要提取的4位数版本号的前3位数
  • 要提取的4位数版本号的最后一位数
  • 根据格式连接所有内容。

我以为我会使用gmaven插件来完成这项工作,并填充一个自定义属性,用于maven release plugin(v2.3.2)的tag或tagNameFormat配置属性 - 但这根本不起作用。

maven release plugin仅支持3个属性(artifactId,version,groupId),不支持任何其他属性。

gmaven插件按预期工作,并以我需要的标记名称格式设置最终用户属性 - 我使用ant run maven插件验证它以回显该属性。

问题在于maven发布插件 - 它不了解任何用户属性......

任何人都可以帮助我如何实现这一目标?

修改

不可能进行交互式运行 - 需要将其配置为在jenkins上运行大约15个项目......

非常感谢, Tapasvi

1 个答案:

答案 0 :(得分:0)

您应仔细阅读maven-release-plugin的文档,因为有一个参数可用于此类目的。 tagNameFormat可以用来改变将要创建的标签的格式(哦对不起。你已经读过了)。该版本可以通过buildhelper-maven-plugin提取到属性中。此外,buildhelper-maven-plugin可用于制作工件id的大写:

通过将正则表达式替换应用于值

来设置属性

正则表达式属性目标可用于在应用正则表达式替换后将属性设置为值。例如,执行以下插件配置以设置clearcase.artifact属性。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>regex-property</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>clearcase.artifactid</name>
              <value>$\{project.artifactId}</value>
              <regex>(.*)</regex>
              <replacement>???</replacement>
              <failIfNoMatch>false</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

但是你需要小心设置属性,导致释放:执行fork Maven进程。您可能需要使用-Darguments选项来设置适当的参数。