2012-10-14 9 views
5

Sto cercando di eseguire JBoss TattleTale da un file di build Ant. Di solito ho eseguito da linea di comando in questo modo:Cosa c'è di sbagliato in questi argomenti Ant/JVM?

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

dove /home/myuser/projects/src è la directory di origine in cui tutti i miei vasi sono, e dove /home/myuser/tmp/tt è la directory di output in cui metto tutte le segnalazioni di Tattletale.

Nel BuildFile Ant sto usando la seguente:

<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> 

Quando eseguo questo obiettivo da linea di comando:

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

BUILD SUCCESSFUL 
Total time: 3 seconds 

Quando vado a /home/myuser/tmp/tt non vedo alcun output, tuttavia l'output Ant mostra SUCCESS senza errori o avvisi. Il mio look <arg> s è corretto, e in caso contrario, come dovrei cambiarlo? Se hanno un aspetto corretto, cosa posso fare per eseguire il debug? Grazie in anticipo!

risposta

3

Il primo argomento è un argomento JVM non un argomento del programma, quindi <arg> è la sintassi errata. In questo caso è più semplice utilizzare il parametro maxmemory dell'attività java.

Quindi rimuovere il primo <arg> e inserire maxmemory=512m nel blocco <java>.

+0

Grazie a @Mike Q (+1) - ma non vedo ancora alcunché generato nella directory di output. – IAmYourFaja

6

due cose:

  1. provare a utilizzare l'opzione di debug durante l'esecuzione di Ant, e salvare l'output in un file di log. Quindi guarda il file di registro. Ti mostrerà come sta eseguendo il comando Java. Ciò ti aiuterà a capire dove l'Ant <java> differisce dal modo in cui esegui Java direttamente dalla riga di comando. Ti darà la possibilità di twittare l'attività <java>.

  2. Quando un parametro è per il comando java in sé, si utilizza <jvmarg> e non <arg>:

Un esempio:

<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> 

Prova che, e correre con ant -d | tee ant.out se siete su Unix/Linux. Su Windows, devi fare ant -d > ant.out.txt che salverà l'output in ant.out.txt, ma non visualizzerà l'output mentre ant è in esecuzione.

1

Se non viene visualizzato alcun output nella directory di destinazione, potrebbe essere dovuto a 1) non è presente alcun archivio nella directory di input specificata o 2) il processo tattletale non funziona. In caso di errore o eccezione, il processo tattletale sembra restituire il codice di uscita 0 e fa presumere che l'esecuzione del processo abbia esito positivo.

Per il debug, vi suggeriscono di garantire determinata directory è corretto e ha JAR (Java archive) file e analizzare i standard di uscita/errori prodotto da tattletale.

Esempio:

<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}" /> 

Nota: - failonerror è falso temporaneamente per il debug unico scopo.

Problemi correlati