2012-07-04 3 views
1

ant build.xml에서 PATH 환경 변수를 this answer으로 설정하려고했습니다.ant build.xml에 PATH 환경 변수를 설정하면 cygwin에서 작동하지만 cmd 또는 PowerShell에서는 작동하지 않습니다.

이것은 cygwin에서 작동하지만 cmd 또는 PowerShell에서는 작동하지 않습니다.

일부 정보 :

아파치 개미 1.6.5 (나는 최신 버전 (1.8.4)이이 알고 있지만, 내부 이유로 나는이 이전 버전을 사용해야합니다)

파워 쉘 2.0

cmd를의 v6.1.7601

Cygwin에서 2.774

윈도우 7

+0

당신은'exec' 작업을 사용하려고합니까? – pb2q

+0

네,이 질문과 동일 http://stackoverflow.com/q/5607580/174605 – coelhudo

답변

0

Unfortunatelly는 1.6.5 버전과 관련된 개미 버그였습니다. 나는 1.8.4로 업데이트 할 수 있었고 모든 것이 잘 작동했다.

3

Windows/cmd 환경에서는 exec 작업을 약간 다르게 사용해야 할 수도 있습니다.

windows 명령 set을 예로 들어 보겠습니다. set은 환경 변수를 인쇄합니다. 파일을 찾을 수 cannont 시스템은을 지정 :

<exec executable="set" outputproperty="set.output"> 
    <env key="MY_VAR" value="MY_VAL"/> 
    <echo message="${set.output}"/> 
</exec> 

그러나 IOException를 슬로우해야 exec 작업이 양식을 사용 : 같은 set 명령을 실행하는 정상 exec 작업을 보일 수 있습니다. 윈도우 cmd를 쉘에서 개미를 실행하는 경우

exec 작업은 다음과 같이 cmd를 통해 호출 할 수 있습니다

<exec executable="cmd" outputproperty="set.output"> 
    <arg line="/c set"/> 
    <env key="MY_VAR" value="MY_VAL"/> 
    <echo message="${set.output}"/> 
</exec> 

이 해당하는 명령입니다; 실행 된 실제 명령은 cmd /c set이며 cmd 서브 프로세스에서 set을 실행 중입니다.

이 이유가 필요한 이유는 약간 복잡하며 명령이 Win32 ::CreateProcess에있는 방식 때문입니다. ant exec docs은이를 간단히 설명합니다.

참고 참고로 PowerShell을 사용하여이 중 하나를 시도하지 않았으므로 어느 경우에도 작동 할 수있는 경험이 없습니다. 내 자신의 개미 빌드 스크립트에서

나는 일반적으로이처럼 보이는 isWindows 테스트와 윈도우 플랫폼을위한 특수 처리가 필요 각 대상의 두 가지 버전이 있습니다

<target name="check-windows"> 
    <condition property="isWindows"> 
     <os family="windows"/> 
    </condition> 
</target> 

그런 다음 나는 버전 사이를 전환 할 수 있습니다 같은 작업 :

<target name="my-target-notwindows" depends="check-windows" unless="isWindows> 
    ... 
</target> 

<target name="my-target-windows" depends="check-windows" if="isWindows> 
    ... 
</target> 

<target name="my-target" depends="my-target-notwindows,my-target-windows"> 
    ... 
</target> 
관련 문제