2011-01-18 1 views
1

프로그램을 실행하려고하는데, 실패하면 필요한 정보를 얻을 수있는 대체 방법이 있습니다. 이 빌드 스크립트를 사용하는 모든 사람이 프로그램을 설치하지는 않습니다. 내가 오류를 설정하여 생각이나 오류가 리디렉션 될 errorproperty 화면에 표시되지 때문에 Ant에서는 "CreateProcess error = 2"라는 exec 오류를 어떻게 억제합니까?

<exec executable="runMe" 
     failonerror="false" 
     failifexecutionfails="false" 
     outputproperty="my.answer" 
     errorproperty="my.error" 
     error="myerror.txt" /> 

가 분명히 나는 ​​개미 매뉴얼을 오해 : 내 임무는 다음이있다.

메시지를 숨길 수 있습니까? "실행 실패 : java.io.IOException :"runMe "..."프로그램을 실행할 수 없습니까?

번갈아 가며 해당 프로그램을 실행할 수 있는지 확인하려면 이 없는지 확인하십시오. 프로그램이 사용자 시스템에있는 경우 사용자간에 동일한 위치에 있지 않습니다.

는 개미의 contrib의 시도/잡기/마침내 명령을 시도

답변

0

이 프로젝트의 목적은 개미에서 내 프로젝트의 서브 버전을 얻을 수 있었다. 일부 개발자에게는 명령 줄 Subversion이 설치되어 있고 다른 개발자에게는 svnversion이 있는지 테스트 할 방법이 필요했습니다. 내가 지금처럼이 실행 내 개미 대상에서

REM File checkCommand.bat 
@echo off 
%1 >NUL 2 >NUL 
if errorlevel 1 goto fail 

REM command succeeded 
exit 0 

:fail 
REM command failed 
exit 1 

:

<target name="checkForSvnversion"> 
    <local name="cmdresult" /> 
    <exec dir="." executable="com" 
     resultproperty="cmdresult" 
     failonerror="false" 
     failifexecutionfails="false"> 
     <arg line="/c checkCommand.bat svnversion" /> 
    </exec> 

    <condition property="exec.failed"> 
    <equals arg1="${cmdresult}" arg2="1" trim="true" /> 
    </condition> 
</target> 

나는이 결과에 따라 두 가지 목표를 가지고 결국

나는 명령을 테스트하기 위해 배치 파일을 사용 :

<target name="getRevisionFromSvnversion" depends="checkForSvnversion" 
     unless="exec.failed"> 
    etc etc 
</target> 

,
<target name="getRevisionFromEntries" depends="checkForSvnversion" 
     if="exec.failed"> 
    etc etc 
</target> 

마지막으로, 나는 개정을 얻기 위해 호출하는 작업이다 : 나는 그것에 대해 알지 못했다

<target name="getRevision" 
     depends="getRevisionFromSvnversion,getRevisionFromEntries"> 
    <echo>My rev is ${svn.revision}</echo> 
</target>