2013-01-20 14 views
12

Na przykład chciałbym mieć właściwość Configuration ustawioną na ${env:AAA}, jeśli istnieje zmienna środowiskowa AAA i inna stała wartość, jeśli nie ma takiej zmiennej środowiskowej.Jak zdefiniować właściwości warunkowe w programie maven?

Jak mogę to zrobić w maven 2? Wydaje

+0

Czy chcesz ustawić nieruchomość? –

Odpowiedz

8

jakbyś activate a profile conditionally ...

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

profil zostanie aktywowane, gdy zmienna środowiskowa jest zdefiniowana wartość test jak w poniższym poleceniem:

mvn ... -Denvironment=test

+0

Nie rozumiem tego. Czy masz na myśli, że maven nie ma warunków własnościowych? Jeśli mam 10 właściwości i chcę je przesłonić przez środowisko, to ile profili powinienem zdefiniować? – mark

+0

Zależy od systemu kompilacji. Jeśli 10 właściwości wzajemnie się wykluczają, wydaje się, że musisz zdefiniować 10 profili. Sugeruję jednak przejrzenie logiki, jeśli tak jest. – hd1

+1

Powinna to być zaakceptowana odpowiedź. – thermz

6

Jeśli nie masz pewności, że właściwość systemowa jest akceptowalna, możesz po prostu zdefiniować właściwość w pliku POM i zastąpić ją, gdy jest to wymagane:

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

Możesz odwoływać się do tej właściwości w innym miejscu POM, korzystając z numeru ${foo.bar}. Aby przesłonić w wierszu poleceń, wystarczy podać nową wartość:

mvn -Dfoo.bar=goodbye ... 
3

Możesz ustawić właściwość warunkowo za pomocą wtyczki maven-antrun. Przykład ustawienia install.path + echo wartości:

<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

Zwróć uwagę, że jeśli spróbujesz użyć '$ {install.path}' w innym 'maven-antrun-plugin', to muszą one mieć tę samą wersję. –

Powiązane problemy