2013-06-18 14 views
5

gitコミットフックを使ってgit commitでpom.xmlファイルを自動的に更新する方法はありますか?新しいブランチをコミットするすべての人がpom.xmlに反映された変更を確実にする方法を教えてください。

私がしたいことは、古いバージョンのすべてのインスタンスをブランチ名に基づいて新しいバージョンに置き換えたいのですか?

たとえば、

私はマスターからチェックアウトする場合、私は私のpom.xmlに見つけるかもしれないが、私がやりたい何

<dependancy> 
    <groupId>com.mycompany</groupId> 
    <artifactId>my_component</artifactId> 
    <version>master-SNAPSHOT</version> 
</dependancy> 

または

<groupId>com.mycompany.project</groupId> 

    <artifactId>mainProject</artifactId> 
    <version>master-SNAPSHOT</version> 
    <name>mainProject</name> 

、誰もが新しいを犯していることを確認することですブランチには、新しいブランチがpom.xmlに反映されています。だから私は「myNewBranch」というマスターに基づいて新しいブランチを作成した場合、私は自動的に次のように更新されるのpom.xmlをしたいと思います:

<dependancy> 
    <groupId>com.mycompany</groupId> 
    <artifactId>my_component</artifactId> 
    <version>myNewBranch-SNAPSHOT</version> 
</dependancy> 

または

<groupId>com.mycompany.project</groupId> 

    <artifactId>mainProject</artifactId> 
    <version>myNewBranch-SNAPSHOT</version> 
    <name>mainProject</name> 
+0

私があなたの必要性を理解していても、これは2つのブランチ間の痛みを伴うマージにつながる可能性があります。これはすべてのpom.xmlが同じ行で変更されるためです。 –

+0

@noahlzそれはトリックを行うように見えます。変数としてgitブランチ名を取得するにはどうすればよいですか? – Avik

+0

@GuillaumeDarmont今私たちは手動でやっていますが、私はそれを自動化したいと思います。 – Avik

答えて

2

あなたが何を探していますコアMavenまたはMaven SCM pluginによって「そのまま」提供されていないものです。その後、

あなたがコミット後のそのプログラムで取得する(または作成します)上で動作するシェルスクリプトを記述する必要がありますブランチ名How to programmatically determine the current checked out Git branchどおりとは、あなたはまた、カスタムMavenを作るような何かを行うことができmvn versions:set

を呼び出しますプラグインまたはmaven-ant-runの実行がこれを行うが、私はスクリプトのアプローチはあなたのための抵抗が最小のパスになると思います。

関連する問題