2009-10-21 3 views
0

오늘은 Apache Ant 파일에 작업을 추가해야했습니다. 명령 행이 가진 문제는 내가이큰 따옴표가없는 Apache Ant 명령 줄 인수 - 가능합니까?

<exec executable="$(myprogram)" 
    <arg value="--param1"> 
    <arg value="--param2"> 
    <arg path="$(somefile)"> 
    <arg value="2>"> 
    <arg path="$(logfile)"> 
</exec> 

에 대해 다음과 같이 사용하면 모든 인수가 인용 한 것이 었습니다

myprogram --param1 --param2 path\somefile 2> path\logfile 

같은 있었어야 때문에 명령이처럼 보였다 :

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile" 

당신이 파일/경로에 공백이 있지만 로그 파일로 파이프를 파괴하면 좋지 않습니다. (대신 프로그램에서 두 가지 추가가 있다고 생각합니다. al 파일 인수 "2>"및 "path \ logfile").

대신이 파일을 매개 변수로 사용하는 배치 스크립트를 호출하여이 문제를 해결했지만 궁금한 점이 있습니다. 이러한 해결 방법없이이 작업을 수행 할 수 있습니까?

답변

2

"myprogram --param1 --param2 path \ somefile 2> path \ logfile"을 실행하면 프로그램의 인수가 "2>"로 끝납니다. 파일 리다이렉션은 앤트 내에서 사용되지 않는 쉘의 조작입니다. ant exec task의 문서를 보면 출력 속성을 통해 리디렉션을 지원한다는 것을 알 수 있습니다.

+0

고마워,이 일반적인 방법으로 보인다 (나는 stdout과 stderr의 차이점을 원한다면 오류 속성도 있음을 본다). – schnaader

2

<arg line="..." />을 사용해 보셨습니까?

+0

이것이 제대로 작동해야한다고 생각합니다. – Geo

+0

고마워,이 작품! 나는 "라인"변종을 알아 차 렸지만 아파치 앤트 매뉴얼은 그것과 "가치"의 차이점을 잘 설명하지 못해 별칭이 될 것이라고 생각했다. – schnaader

+1

Ant doc의 경우 가능하면 회선 버전을 사용하지 않는 것이 좋습니다. 개미는 (유닉스) 쉘이하는 것과 비슷한 방식으로 명령 행을 분할하려하지만, 어떤 경우에는 예상했던 것과는 아주 다른 것을 만들 수 있습니다. http://ant.apache.org/manual/using.html#arg – Yishai

1

개미 작업에는 명령 줄 파이핑없이 로그 파일을 지정할 수있는 출력 매개 변수가 있으며, append 매개 변수와 함께 출력 파일을 덮어 쓸지 또는 첨부할지 결정합니다.

1

주제 시동기와 동일한 문제가있었습니다. 자바 실행 커맨드 라인에서 소스 파일을 별도의 인수로 추가해야했습니다. 따옴표가 붙은 하나의 인수가 아닙니다. <arg value="..." /> 태그를 사용했지만 <arg line="..." />을 nullptr로 사용하는 것이 내 문제를 해결할 것을 제안했습니다.