2009-06-01 6 views
50

릴리스 및 개발 환경에서 올바르게 작동하는 빌드 스크립트를 원합니다. 이를 위해기본값으로 환경에서 ant 속성을 정의하십시오.

내가 전화 개미의 속성을 정의하고 싶습니다 (예) fileTargetName

fileTargetName 기본을 얻을 것이다 사용할 수없는 경우는, 가능한 경우는 환경 변수 RELEASE_VER에서 값의 얻을 것이다 개미 <condition><value></condition> & <property>dev에

도움말의 값은에 감사 작업을 진행합니다.

답변

71

속성에 환경 변수를 얻는 방법의 Ant documentation에서 예 : 귀하의 경우

<property environment="env"/> 
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/> 
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/> 

, 당신은 ${env.RELEASE_VER}을 사용합니다.

 
Attribute Description            Required 
property The name of the property to set.      Yes 
value  The value to set the property to. Defaults to "true". No 
else  The value to set the property to if the condition  No 
      evaluates to false. By default the property will 
      remain unset. Since Ant 1.6.3 

함께 퍼팅 :

그런 다음 조건의 경우, 문서 here이 세 가지 속성이 있다고

내가 이것보다 쉬운 방법이 있습니다 확신
<property environment="env"/> 
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev"> 
    <isset property="env.RELEASE_VER" /> 
</condition> 
+2

어제는이 질문에 대답 할 수 없었지만, 그래서 내가 연구하도록 강요했습니다. 스택 오버 플로우 만세! –

+1

감사합니다! ant의 이상한 동작 : 환경 매개 변수가 설정되지 않은 경우 $ {env.ANT_HOME}에서 에코를하면 "$ {env.ANT_HOME}"이 인쇄됩니다. 기본 개미 호출은 그것을 설정하지 않습니다. (적어도이 머신에서는 : RH WS 5, bash) –

0

, 하지만 어때요 :

<project name="example" default="show-props"> 

    <property environment="env" /> 

    <condition property="fileTargetName" value="${env.RELEASE_VER}"> 
     <isset property="env.RELEASE_VER" /> 
    </condition> 

    <condition property="fileTargetName" value="dev"> 
     <not> 
      <isset property="env.RELEASE_VER" /> 
     </not> 
    </condition> 

    <target name="show-props"> 
     <echo>property is ${fileTargetName}</echo> 
    </target> 

</project> 
+0

조건에 대한 else 속성에 대해 몰랐습니다. - @mmyers FTW – toolkit

+0

매뉴얼에있는 모든 것을 다 볼 필요가 있습니다. . :) –

38

을 사용할 필요가 없습니다. 이것에 대한. RELEASE_VER 환경 변수가 설정되어

<property environment="env"/> 
<property name="env.RELEASE_VER" value="dev"/> 

경우, 해당 건물이 환경에서 그 값을 얻을 것이다 번째 <property> 문은 효과가 없습니다 : 당신은 그냥이 사용할 수 있도록 개미의 속성, immutable 있습니다. 그렇지 않으면 속성은 첫 번째 문 다음에 설정 해제되고 두 번째 문은 해당 값을 "dev"으로 설정합니다.

+0

별로 효과가 없지만 다른 이름을 붙이기 위해 을 추가 할 수 있다고 생각 하시나요? –

+0

물론, 와 같은 세 번째 행을 추가 할 수 있습니다. –

+0

고마워, 그 문제에 대한 좋은 비꼬아. 가독성 때문에 나는 그 상태를 고수 할 것이다. –