2013-06-18 13 views
5

C'è un modo per aggiornare automaticamente un file pom.xml su un commit git usando un hook git commit?Come assicurarsi che tutti coloro che commettono un nuovo ramo abbiano le modifiche riflesse nel pom.xml?

Quello che voglio fare è sostituire tutte le istanze della vecchia versione, con la nuova versione basata sul nome del ramo.

Ad esempio.

Se ho check out da maestro potrei trovare nel mio pom.xml

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

o

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

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

Quello che vorrei fare, è quello di fare in modo che chiunque commette un nuovo ramo, ha quel nuovo ramo riflesso nel pom.xml. Quindi, se creo un nuovo ramo sulla base di maestro di nome "myNewBranch", vorrei che il pom.xml da aggiornare automaticamente al seguente:

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

o

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

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

Anche se comprendo le tue necessità, questo potrebbe portare a dolorose fusioni tra due rami, poiché ogni pom.xml verrebbe modificato alle stesse linee. –

+0

@noahlz Sembra che farebbe il trucco. Come faccio a tirare il nome del ramo git come variabile? – Avik

+0

@GuillaumeDarmont bene in questo momento lo stiamo facendo manualmente, mi piacerebbe automatizzarlo. – Avik

risposta

2

Si sta cercando di fare qualcosa che non viene fornito "fuori dagli schemi" dal core Maven o dallo Maven SCM plugin.

Dovrete scrivere uno script di shell che gira su post-commit che ottiene a livello di codice (o crea) il nome del ramo come per How to programmatically determine the current checked out Git branch e quindi chiama mvn versions:set

Si potrebbe anche fare qualcosa di simile a fare un Maven personalizzato plugin o maven-ant-run esecuzione per fare questo, ma penso che l'approccio di script sarà il percorso di minor resistenza per voi.

Problemi correlati