2013-01-20 6 views
12

Ich möchte zum Beispiel die Eigenschaft Configuration auf ${env:AAA} setzen, wenn es eine Umgebungsvariable AAA und einen anderen konstanten Wert gibt, wenn es keine solche Umgebungsvariable gibt.Wie bedingte Eigenschaften in Maven definieren?

Wie mache ich es in Maven 2?

+0

Sie möchten also eine Eigenschaft bedingt festlegen? –

Antwort

8

Es scheint, als ob Du activate a profile conditionally ...

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

Das Profil aktiviert sein wird, wenn die Umgebungsvariable auf den Wert test wie im folgenden Befehl definiert:

mvn ... -Denvironment=test

+0

Ich verstehe es nicht. Meinst du, Maven hat keine Eigentumsverhältnisse? Wenn ich 10 Eigenschaften habe und ich erlauben möchte, dass jedes einzelne durch die Umgebung überschrieben wird, wie viele Profile sollte ich definieren? – mark

+0

Hängt von Ihrem Build-System ab. Wenn die 10 Eigenschaften sich gegenseitig ausschließen, dann scheint es, dass Sie 10 Profile definieren müssen. Ich würde jedoch vorschlagen, Ihre Logik zu überprüfen, wenn dies der Fall ist. – hd1

+1

Dies sollte die angenommene Antwort sein – thermz

6

Wenn eine Systemeigenschaft nicht akzeptabel ist, können Sie einfach die Eigenschaft in Ihrer POM-Datei definieren und bei Bedarf überschreiben:

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

Sie können diese Eigenschaft an anderer Stelle in Ihrem POM referenzieren, indem Sie auf ${foo.bar} verweisen. Übergeben Sie einfach einen neuen Wert, um in der Befehlszeile zu überschreiben:

3

Sie können eine Eigenschaft bedingt mit Maven-antrun-plugin festlegen. Beispieleinstellung install.path + Echowert:

<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

Beachten Sie, dass wenn Sie versuchen, '$ {install.path}' in einem anderen 'maven-antrun-plugin' zu verwenden, sie dieselbe Version haben müssen. –