Sto costruendo una pipeline di distribuzione per un paio di progetti che dipendono l'uno dall'altro. Ogni build produce una nuova versione di rilascio con un numero di versione univoco, che viene distribuito in un repository Maven. I progetti downstream nella pipeline vengono quindi attivati con tale nuova versione come dipendenza e costruiti allo stesso modo.Modifica dei valori Maven pom.xml <properties> fisicamente
Quello che mi serve è modificare un valore di proprietà in pom.xml (o tutti i poms in un progetto multi-modulo) prima di costruire il progetto. Ad esempio nel seguente codice lo "0.1.200" verrebbe modificato in "0.1.345" (o qualunque sia l'ultimo numero di build). L'utilizzo delle proprietà di sistema non è un'opzione, poiché il pom aggiornato verrà distribuito in un repository Maven, quindi la modifica deve essere persistente.
<properties>
<foo.version>0.1.200</foo.version>
</properties>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>foo</artifactId>
<version>${foo.version}</version>
</dependency>
</dependencies>
C'è qualche plugin di Maven per fare questo con una sola istruzione di riga di comando? Altrimenti dovrò scrivere un breve script (ad esempio in Ruby) che analizzi e cambi tutti i file pom.xml nel progetto.
Questo plug-in ha operazioni per l'aggiornamento automatico delle dipendenze alle versioni più recenti, ma non ho notato un modo per aggiornare una singola proprietà ad un valore specificato. –
Il [versions-maven-plugin] (http://mojo.codehaus.org/versions-maven-plugin/examples/update-properties.html) è in grado di gestire tali proprietà. Dai un'occhiata ai documenti. – khmarbaise
Il problema con le versioni: update-properties è che tenta automaticamente di rilevare qual è l'ultima versione. In una pipeline di distribuzione che non è buona, perché potrebbe accidentalmente causare a Maven di trovare una versione troppo vecchia o nuova. Per evitare build irripetibili, richiedo esplicitamente quale versione utilizzare. –