我正在为我的maven项目设置一个mecurial存储库。
这个maven项目由几个模块组成。当我创建包含所有创建的jar的安装zip时,所有模块都具有相同的版本。
到目前为止,我已经使用父pom中的属性实现了这一点,模块在构建时使用它。到目前为止,一切工作都很顺利,当我想要更改版本时,我只有一个位置可以改变。
现在我有了使用mecurial分支名称作为maven版本的ingenius(=奇怪的)想法。
我知道我可以使用hg branch
获取当前的mercurial分支名称。使用exec maven plugin应该可以在任何系统(窗口/ linux)上读取它。使用它并将其写入属性文件,我应该能够使用property plugin
但是我一直在阅读分支名称并将其写入文件:
<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
答案 0 :(得分:1)
我不是maven人,但听起来你可以使用outputFile on exec将输出写入文件。您可以使用以下模板让Mercurial输出有效的Java属性文件:
hg log --rev . --template 'version={branch}-{node|short}\n'
然后加载它。这种事情的一个常见模板是{latesttag}-{latesttagdistance}-{node|short}
那就是说,我当然希望maven能让你直接将命令输出发送到一个变量中,而不是先转到磁盘上的文件 - 蚁必然会这样做。