Mercurial Maven发布插件问题

时间:2012-08-02 00:39:51

标签: maven-2 mercurial bitbucket maven-release-plugin

我喜欢使用Maven并分发像Mercurial(BitBucket)这样的SCM。

然而,随着我的项目规模扩大和我的Hg存储库的增长,我发现Maven Release插件越来越繁琐。

主要问题是,当调用mvn release:prepare时,Maven不会利用Hg的分布式特性,并执行整个存储库的完整克隆以放入临时目录。

2009年, Fabrizio Giudici 对这个问题进行了详细记录 http://weblogs.java.net/blog/fabriziogiudici/archive/2009/10/29/fixing-two-problems-maven-mercurial-hudson

我原以为Sonatype可能已经更新了插件,但是我们仍然需要在发布之前下载整个repo。

我希望能够联系StackOverflow社区,看看是否有其他人遇到过这个问题,是否有人在maven发布时想出了解决可怕的完整克隆的新方法。

1 个答案:

答案 0 :(得分:12)

这就是我要做的事情,以避免愚蠢的多推动与maven的混合:

首先确保使用正确版本的插件处理mermial类型的scm:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <tagNameFormat>@{project.version}</tagNameFormat>
    </configuration>
</plugin>

然后首先执行准备目标

mvn release:prepare -DautoVersionSubmodules=true -DreleaseVersion=x.x.x -DdevelopmentVersion=y.y.y-SNAPSHOT -DpushChanges=false

请注意pushChanges=false属性

if all ok then
    hg push
    mvn release:perform
else
    mvn release:clean
    and have fun removing the changeset from local hg repo
endif