2012-10-14 7 views
5

Ant 빌드 파일에서 JBoss TattleTale을 실행하려고합니다. 보통 나는과 같이 명령 줄에서 실행 : /home/myuser/projects/src 내 모든 JAR 파일이 소스 디렉토리이며, /home/myuser/tmp/tt 내가 고자질의 모든 보고서를 배치 출력 디렉토리입니다이 Ant/JVM 인수가 잘못된 이유는 무엇입니까?

java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt 

.

개미 빌드 파일에서 내가 사용하고 다음

<echo message="Running tattle-tale..."/> 
<java fork="true" failonerror="true" jar="/home/myuser/jars/tattletale.jar"> 
    <arg value="Xmx512m"/> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 

을 내가 명령 줄에서이 목표를 실행하면 : 나는 /home/myuser/tmp/tt에 갈 때

run-tattletale: 
    [echo] Running tattle-tale... 

BUILD SUCCESSFUL 
Total time: 3 seconds 

내가 출력을 볼 수 없습니다, 그러나 Ant 출력은 오류 또는 경고없이 SUCCESS을 표시합니다. 내 <arg>의 모양이 올바른지, 그렇지 않은 경우 어떻게 변경해야합니까? 그들이 올바르게 보이면 디버깅을 위해 무엇을 할 수 있습니까? 미리 감사드립니다!

답변

3

첫 번째 args는 프로그램 인수가 아닌 JVM 인수이므로 <arg>은 잘못된 구문입니다. 이 경우 java 작업의 maxmemory 매개 변수를 사용하는 것이 더 쉽습니다.

첫 번째 <arg>을 제거하고 블록에 maxmemory=512m을 입력하십시오.

+0

감사합니다. @Mike Q (+1) -하지만 출력 디렉토리에 생성 된 내용이 아직 보이지 않습니다. – IAmYourFaja

6

두 가지 :

  1. 이 Ant를 실행할 때 디버그 옵션을 사용하여 시도하고 로그 파일에 출력을 저장합니다. 그런 다음 로그 파일을보십시오. Java 명령을 실행하는 방법을 보여줍니다. 그러면 Ant <java>이 명령 줄에서 직접 Java를 실행하는 방법과 다른 점을 파악하는 데 도움이됩니다. 그것은 당신에게 <java> 작업을 tweek 할 수있는 능력을 줄 것입니다. 매개 변수가 java 명령 자체에 대한 경우

  2. , 당신은 <jvmarg> 사용하지 <arg> :

예 :

<echo message="Running tattle-tale..."/> 
<java fork="true" 
    failonerror="true" 
    jar="/home/myuser/jars/tattletale.jar"> 
    <jvmarg value="-Xmx512m"/> <!-- Note the dash! --> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 

가를 시도하고 당신이 있다면 ant -d | tee ant.out 실행 유닉스/리눅스. Windows에서 ant -d > ant.out.txt을 실행하면 출력은 ant.out.txt으로 저장되지만 ant이 실행되는 동안 출력은 표시되지 않습니다.

1

대상 디렉토리에 출력이 표시되지 않으면 1) 주어진 입력 디렉토리에 아카이브가 없거나 2) tattletale 프로세스가 실패했기 때문일 수 있습니다. 오류 또는 예외가 발생하면 tattletale 프로세스가 종료 코드 0을 반환하는 것으로 보이며 프로세스 실행이 성공했다고 ant는 판단합니다.

디버깅을 위해, 나는 주어진 디렉토리가 정확하고 자바 아카이브 (JAR)를 파일과 표준 출력/오류를 분석tattletale 제작을 가지고 확인 에 당신을 제안한다.

예 :

<echo message="Running tattle-tale..."/> 
<java fork="true" 
    failonerror="false" 
    errorproperty="errorproperty" 
    outputproperty="outputproperty" 
    jar="/home/myuser/jars/tattletale.jar"> 
    <jvmarg value="-Xmx512m"/> <!-- Note the dash! --> 
    <arg value="/home/myuser/projects/lib"/> 
    <arg value="/home/myuser/tmp/tt"/> 
</java> 
<echo message="stdout>> ${outputproperty}"/> 
<echo message="stderr>> ${errorproperty}" /> 

참고 : - failonerror에만 목적을 디버깅 일시적으로 false입니다.

관련 문제