Modificare le proprietà a pom.xml in fase di esecuzione dei task Maven Ant. È possibile?

StackOverflow https://stackoverflow.com/questions/2848742

  •  27-09-2019
  •  | 
  •  

Domanda

Ho il seguente caso d'uso: La mia applicazione viene avviata con uno script Ant, che chiede all'utente diverse domande circa la configurazione del progetto (le impostazioni del database, ecc). Queste impostazioni vengono memorizzate in un file di proprietà-.

Poi voglio correre Maven da dentro il mio script di Ant da task Maven Ant, che dovrebbero sostituire le proprietà predefinite nel mio pom.xml con le proprietà del file proprietà. Io non voglio cambiare il pom.xml.

C'è un modo per fare questo? Grazie in anticipo!

( BTW ho già provato un approccio simile con solo Maven, che sembra impossibile al momento )

È stato utile?

Soluzione

È possibile ridefinire le proprietà nella riga di comando Maven usando -D e questi avrà la precedenza le proprietà nel file di progetto.

Per esempio, in pom.xml

  <properties>
     <myProp>A</myProp>
  </properties>

Nel vostro build.xml formica, si può quindi richiamare la riga di comando mvn come

mvn -DmyProp=B install

in cui saranno definiti myProp a B nel progetto. Il href="http://maven.apache.org/ant-tasks/examples/mvn.html" rel="noreferrer"> mvn formica pagina discute utilizzando una macro per richiamare la riga di comando Maven. Questo può essere facilmente adattato a passare anche le proprietà aggiuntive.

Per fare questo in Maven da solo, utilizzare il exec plugin per lanciare Maven, passando i parametri di comando nello stesso modo come fatto con la formica:. compito java

Altri suggerimenti

Hai provato a sostituire le proprietà al volo attraverso compito <copy> formica?

assumeremo che i file di proprietà sono in settings.properties. Definire le proprietà per sostituire nel vostro pom.xml con @ intorno a loro, è possibile copiare il file POM e sostituire alcune proprietà allo stesso tempo. Per esempio:.

<copy file='pom.xml' toFile='real-pom.xml'>
  <filterset filtersfile='settings.properties' />
</copy>

Poi si richiama Maven:

  

mvn -f reale pom.xml

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top