2011-10-25 1 views
5

ビルドにはMavenを、チェンジセットにはMercurialを使用します。私たちのソフトウェアではメジャーバージョンがすでに処理されていますが、私たちのソフトウェアを実行するサーバーを構築するためにMercurialチェンジセットが使用されたことを知りたいと思っています。(838cb9c0367e)などのMercurial作業ディレクトリチェンジセットIDをMaven経由でプロパティファイルに注入しますか?

誰かがMercurialの作業ディレクトリのチェンジセットを取得し、それをプロパティファイルなどに取得する方法を知っている人はいませんか?そうすれば、sysadminが何に対してバージョンは現在実行中ですか?

+0

Mavenのことは知らないが、現在のチェンジは、これは、多かれ少なかれ同じ質問のように見えます-i' – zerkms

+0

'HG IDで容易に検索することができます。http://stackoverflow.com/questions/3934603/maven-mercurial-for-build-numbers –

答えて

5

は、あなたのpom.xmlにこれをマージ:

<project> 
    <build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 

    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>hgchangeset</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

その後${changeSet}として設定されたプロパティを持つsrc/main/resources.propertiesファイルを作ります。たとえば:

revision = ${changeSet} 
modificationTime = ${changeSetDate} 
+0

これは素晴らしいです、魅力的な作品!!!!! – benstpierre

0

コマンド出力を(環境変数f.eに)傍受できる場合は、hg id -iが簡単になります。より複雑なIDは、あなたは性質がその情報を持つファイルを生成<exec>または<java>タスクを実行するために、Mavenのantrunプラグインを使用することができhg log --template "..." tip

0

で構成することができます。しかしそれほどエレガントではありません。

6

あなたは、バージョン管理外の.propertiesファイルにチェンジセットIDを出力updateフックを作ることができる。このアプローチの

[hooks] 
update = echo changesetid=$HG_PARENT1 > version.properties 

メリットは、必要な場合は、簡単にこの値をカスタマイズできることで、ビルドは独立していますバージョン管理システム(またはその欠如)。

代わりにそれを生成するMavenビルドに何かを配置する場合は、Buildnumber Maven Pluginhgchangesetゴール)またはを見ましたか?

関連する問題