2013-06-18 11 views
5

Czy istnieje sposób, w jaki mogę automatycznie zaktualizować plik pom.xml na zatwierdzeniu git za pomocą haka zatwierdzenia git?Jak upewnić się, że wszyscy, którzy zatwierdzą nowy oddział, znajdą odzwierciedlenie w pom.xml?

Co chcę zrobić, to chcę zastąpić wszystkie wystąpienia starej wersji, z nową wersją opartą na nazwie oddziału.

Na przykład.

Gdybym Odjazd od pana mogę znaleźć w moim pom.xml

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

lub

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

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

Co chciałbym zrobić, jest upewnienie się, że każdy, kto popełnia nowy gałąź, ma tę nową gałąź odzwierciedloną w pom.xml. Więc jeśli utworzyć nowy oddział w oparciu o mistrza nazwie „myNewBranch” Chciałbym pom.xml być uaktualniany na następujące kwestie:

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

lub

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

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

Nawet jeśli zrozumiem twoją potrzebę, może to doprowadzić do bolesnego scalenia dwóch gałęzi, ponieważ każdy plik pom.xml zostanie zmodyfikowany na tych samych liniach. –

+0

@noahlz Wygląda na to, że to wystarczy. Jak mogę pobrać nazwę gałęzi git jako zmienną? – Avik

+0

@GuillaumeDarmont dobrze teraz robimy to ręcznie, chciałbym zautomatyzować to. – Avik

Odpowiedz

2

Szukasz zrobić coś, co nie jest dostarczane "po wyjęciu z pudełka" przez rdzeń Maven lub Maven SCM plugin.

Musisz napisać skrypt, który działa na post-commit, który uzyskuje programowo (lub tworzy) nazwę oddziału zgodnie How to programmatically determine the current checked out Git branch a następnie wywołuje mvn versions:set

Można też zrobić coś takiego zrobić niestandardową Maven plugin lub maven-ant-run wykonanie tego, ale myślę, że podejście skryptowe będzie ścieżką najmniejszego oporu dla ciebie.

Powiązane problemy