2

我目前正在为我的 Maven 项目设置一个 mecurial 存储库。

这个 Maven 项目由几个模块组成。当我创建包含所有创建的 jar 的安装 zip 时,所有模块都具有相同的版本。

到目前为止,我已经使用父 pom 中的一个属性实现了这一点,模块在构建时使用该属性。到目前为止,一切都很好,当我想更改版本时,我只有一个位置可以更改。

现在我得到了使用 mecurial 分支名称作为 maven 版本的 ingenius (=weird) 想法。

我知道我可以使用hg branch. 使用exec maven 插件应该可以在任何系统(window/linux)上读取它。使用它并将其写入属性文件,我应该能够使用属性插件再次读取它

但是我坚持阅读分支名称并将其写入文件:

<plugin>
    <artifactId>exec-maven-plugin</artifactId>
    <groupId>org.codehaus.mojo</groupId>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>hg</executable>
                <arguments>
                    <argument>branch</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

你们中的一个人是否知道如何解决这个问题,或者有一个天才的不同解决方案来在构建时将 mercurial 分支名称放入 maven pom 中?

最好的问候, Xeno Lupus

4

1 回答 1

1

我不是专家,但听起来你可以在 exec 上使用 outputFile将输出写入文件。您可以让 Mercurial 使用以下模板输出有效的 Java 属性文件:

hg log --rev . --template 'version={branch}-{node|short}\n'

然后加载它。这类事情的一个常见模板是{latesttag}-{latesttagdistance}-{node|short}

也就是说,我当然希望 maven 让您将命令输出直接发送到变量中,而无需先转到磁盘上的文件——ant 确实做到了。

于 2012-05-17T03:06:27.200 回答