2013-01-20 3 views

답변

8

이 나타납니다 ... 당신 activate a profile conditionally 마치

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>environment</name> 
     <value>test</value> 
     </property> 
    </activation> 
    ... 
    </profile> 
</profiles> 
프로파일 환경 변수는 다음 명령으로 값 test에 정의 될 때 활성화 될 것

:

mvn ... -Denvironment=test

+0

나는 그것을 얻지 않는다. 메이븐에게 부동산 조건이 없다는 것을 의미합니까? 10 개의 속성이 있고 환경을 통해 각 속성을 재정의 할 수 있도록하려면 몇 개의 프로필을 정의해야합니까? – mark

+0

빌드 시스템에 따라 다릅니다. 10 개의 속성이 상호 배타적 인 경우 10 개의 프로필을 정의해야합니다. 그러나이 경우 귀하의 논리를 검토하는 것이 좋습니다. – hd1

+1

이것은 받아 들여진 대답 – thermz

6

시스템 속성을 사용할 수없는 경우 POM 파일에 속성을 정의하고 필요할 때 재정의 할 수 있습니다.

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

을 참조하여 POM의 다른 곳에서이 속성을 참조 할 수 있습니다. 당신은 받는다는 - antrun-플러그인을 사용하여 조건부 속성을 설정할 수 있습니다

mvn -Dfoo.bar=goodbye ... 
3

: 명령 행에서 대체하려면, 단지 새로운 가치를 전달합니다. 설정 예 install.path + 값을 반향 :

<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

다른'maven-antrun-plugin'에서'$ {install.path}'를 사용하려고하면 같은 버전을 가져야합니다. –

관련 문제