2

I'm currently setting up a mecurial repository for my maven project.

This maven project consists of several modules. All modules have the same version when I create an install zip containing all created jars.

So far I have realised this using a property in the parent pom which the modules use when they are build. So far everything work quite nice and I have only one position to change when I want to change the version.

Now I got the ingenius (=weird) idea to use the mecurial branch name as the maven version.

I know I can get the current mercurial branch name using hg branch. Using the exec maven plugin it should be possible to read it on any system (window/linux). Using this and writing it to a property file, I should be able to read it again using the property plugin

However I'm stuck at reading the branch name and writing it to a file:

<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>

Does one of you know how to solve this or has an genius different solution to get the mercurial branch name into the maven pom when building?

Best regards, Xeno Lupus

4

1 に答える 1

1

私はMavenの人ではありませんが、execでoutputFileを使用して出力をファイルに書き込むことができるようです。次のようなテンプレートを使用して、Mercurial に有効な Java プロパティ ファイルを出力させることができます。

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

この種の一般的なテンプレートの 1 つは、{latesttag}-{latesttagdistance}-{node|short}

そうは言っても、maven を使用して、最初にディスク上のファイルに移動することなく、コマンド出力を直接変数に送信できることを願っています-ant は確かにそうしました。

于 2012-05-17T03:06:27.200 に答える