In Maven è molto facile da impostare le proprietà in un pom con la seguente sintassi:In Maven, come posso creare dinamicamente un valore di proprietà in fase di runtime?
...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...
Ora ho bisogno di costruire una proprietà che dipende dalla versione del mio pom. Per creare la proprietà che voglio fare il seguente (pseudo codice Java):
String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0], splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6
Dovrebbe essere dinamica, perché è utilizzato come nome del tag nel nostro repository e deve essere sempre in sincronia con la versione del artefatto.
Qualche idea su come creare proprietà "dinamiche"?
E se non lego il plug-in a una fase. Sto usando il plugin di rilascio di Maven e chiamo il rilascio dell'obiettivo: preparare. Come renderlo disponibile qui? – EhmKah
se non si specifica una fase, per impostazione predefinita è associata alla fase 'validate', quindi lo snippet di codice sopra eseguirà l'obiettivo quando la fase di validazione è attiva. quando invochi direttamente un obiettivo, ad es. 'release: prepare', quello che succede è che maven esegue l'obiettivo saltando direttamente qualsiasi fase del ciclo di vita, quindi l'obiettivo' release: prepare' stesso non vedrà la proprietà * ma * il ciclo di vita * fork * di 'release: prepare' vedrà esso. Quindi 'release: prepare' non sarà in grado di utilizzare la proprietà per la codifica di SCM, ma la proprietà sarà presente nella build forked che il plugin di rilascio esegue –
Se si desidera che il tag SCM sia basato sulla proprietà (è necessario aggiornare la tua domanda per riflettere sul fatto che questo è il tuo obiettivo, o iniziare una seconda domanda) allora potresti dover usare qualcosa come http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#tagNameFormat che non ti darà la sostituzione '_' che vuoi né l'iniezione' _P'. Raccomando di cambiare i requisiti del nome del tag piuttosto che provare a piegare Maven ;-) –