2016-06-22 8 views
2

Ich möchte ein Ziel in meinem Skript, das die Java-Version des Benutzers in einem Dateiformat aufzeichnet. Aus irgendeinem Grund kann die Ausgabe des Befehls "java -version" nicht aufgezeichnet werden.Schreibe "java -version" in eine Datei mit ant

Ich habe versucht, java -version > java.txt im Terminal laufen, was auch nicht funktioniert, so rate ich das Ergebnis von Java-Version kann nicht erfasst werden?

+0

Versuchen Sie 'java -version &> version.txt'. –

+0

Dank @Carl, erkannte ich, dass die Ausgabe in den Fehler-Stream ist, so habe ich nur durch die Ant stattdessen gefangen. – tom

Antwort

3

Sie können die folgenden exec Aufgabe in Ihrem Ant verwenden build.xml:

<exec executable="java"> 
    <arg value="-version"/> 
    <redirector output="java-version.txt" alwayslog="true"/> 
</exec> 
+0

Danke! Ich benutze sshexec, während ich einen entfernten Rechner logge, und ich habe gerade den Fehlerstrom erfasst, da dieser Task keinen Redirector zu haben scheint. Aber Ihre Methode sollte für den allgemeinen Fall funktionieren. – tom

1

einfach Ant gebautet Eigenschaften verwenden, finden Sie Ant Manual/integrierte Eigenschaften, F. E. :

<echoproperties prefix="java"/> 

werden alle Java-Objekte drucken.
Es gibt 3 Version bezogenen Eigenschaften:

  1. java.version
  2. java.vm.specification.version
  3. java.vm.version

So einfach die entsprechende Eigenschaft nehmen:

<project> 

<echo> 
    ${java.version} 
    ${java.vm.specification.version} 
    ${java.vm.version} 
</echo> 

<!-- assuming you want ${java.version} --> 
<echo file="foobar.txt">Java Version = ${java.version}</echo> 

</project> 

Ausgabe:

[echo] 1.7.0_72 
[echo] 1.7 
[echo] 24.72-b04