2013-01-20 17 views
12

Ad esempio, desidero avere la proprietà Configuration impostata su ${env:AAA} se esiste una variabile di ambiente AAA e qualche altro valore costante se non esiste una variabile di ambiente di questo tipo.Come definire le proprietà condizionali in Maven?

Come si fa in Maven 2?

+0

Quindi, si desidera impostare una proprietà in modo condizionale? –

risposta

8

Sembra come se si activate a profile conditionally ...

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>environment</name> 
     <value>test</value> 
     </property> 
    </activation> 
    ... 
    </profile> 
</profiles> 

Il profilo sarà attiva quando la variabile ambiente è definito al valore test come nel seguente comando:

mvn ... -Denvironment=test

+0

Non capisco. Intendi dire che non hai condizioni di proprietà? Se ho 10 proprietà e voglio consentire l'override di ciascuna attraverso l'ambiente, quanti profili devo definire? – mark

+0

Dipende dal tuo sistema di build. Se le 10 proprietà si escludono a vicenda, sembra che sia necessario definire 10 profili. Tuttavia, suggerirei di rivedere la tua logica se questo è il caso. – hd1

+1

Questa dovrebbe essere la risposta accettata – thermz

6

Nel caso in cui una proprietà di sistema sia accettabile, è sufficiente definire la proprietà nel file POM e sovrascrivere quando richiesto:

<project> 
... 
    <properties> 
    <foo.bar>hello</foo.bar> 
    </properties> 
... 
</project> 

È possibile fare riferimento a questa proprietà altrove nel proprio POM facendo riferimento a ${foo.bar}. Per ignorare sulla riga di comando, basta passare un nuovo valore:

mvn -Dfoo.bar=goodbye ... 
3

È possibile impostare una proprietà condizionale utilizzando Maven-antrun-plugin. Esempio di impostazione install.path + eco del valore:

<plugin> 
    <!-- Workaround maven not being able to set a property conditionally based on environment variable --> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <exportAntProperties>true</exportAntProperties> 
       <target> 
        <property environment="env"/> 
        <condition property="install.path" value="${env.INSTALL_HOME}" else="C:\default-install-home"> 
         <isset property="env.INSTALL_HOME" /> 
        </condition> 
        <echo message="${install.path}"/> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

Si noti che se si tenta di utilizzare '$ {install.path}' in un altro 'maven-antrun-plugin', devono avere la stessa versione. –

Problemi correlati