Kann man Ant über Java aufrufen?

  • Themenstarter Themenstarter Bartleby40K
  • Beginndatum Beginndatum
B

Bartleby40K

Hallo zusammen,

ich arbeite grade an meinem Abschlussprojekt und suche nach einer Möglichkeit, Ant über Java aufzurufen. Genauer gesagt, soll Ant eine Build.xml verarbeiten.
Ich finde über Google viele Seiten die mir erklären wie ich Ant benutze und wie die ganzen Build-Files ausehen sollen, aber nicht wie ich aus einer Java-Anwendung heraus Ant benutze.

Kann mir da jemand von euch weiterhelfen?

Greetz

Bartleby40K
 
Normalerweise benutzt man ant auch nicht aus einer Java-Anwendung heraus sondern benutzt es um eine Anwendung durch kompilieren, jar erstellen etc erst zu erstellen.

Wenn du es aus Java Aufrufen möchtest kannst du dies mit dem ProcessBuilder oder Runtime.exec realsieren. Was du übergeben musst findest du unter Apache Ant User Manual: Command Line
 
Hi,

erstmal danke für die Antwort, leider muss ich sagen das es nicht funktioniert. Ich rufe Ant so auf:

Code:
Runtime.getRuntime().exec("ant –f build.xml");

Der Aufruf "ant –f build.xml" funktioniert über die DOS-Box einwandfrei, über den Aufruf aus Java heraus passiert gar nichts :(
Folgende Fehlermeldung spuckt er aus:

Code:
java.io.IOException: CreateProcess: ant –f build.xml error=2

Weisst du vielleicht woran es liegen könnte?

Greetz

BArtleby40K
 
Zuletzt bearbeitet von einem Moderator:
Hi nochmal,

erstmal danke für den Tip, hatte den Beitrag nicht gefunden, nur leider funktioniert auch dies nicht. habe den code wie folgt übernommen:

Code:
File scripFile = new File("c:/tmp/ant.bat");
ProcessBuilder processBuilder = new ProcessBuilder(scripFile.getAbsolutePath());
processBuilder.directory(scripFile.getParentFile());
Process process = processBuilder.start();
Scanner scanner = new Scanner(process.getInputStream());
while(scanner.hasNextLine()){
          System.out.println(scanner.nextLine());
}
scanner.close();
System.out.println(process.waitFor());

Wenn ich das so laufen lassen, bekomme ich eine Endlosschleife, anscheinend hat der scanner immer eine nextLine(). Das ganze habe ich dann soweit abgespeckt:

Code:
File scripFile = new File("c:/tmp/ant.bat");
ProcessBuilder processBuilder = new ProcessBuilder(scripFile.getAbsolutePath());
processBuilder.directory(scripFile.getParentFile());
Process process = processBuilder.start();

Es passiert wieder nichts, wie am Anfang :(

Hab grade rausgefunden das es anscheinend an der .bat-Datei liegt. In meiner ant.bat steht nichts anderes als

Code:
ant -f c:\tmp\build.xml

Das einzige was aber passiert wenn ich die .bat von der Konsole aus ausführe, ist, dass dieser Ant-Aufruf immer wieder ausgegeben statt ausgeführt wird. Das erklärt auch warum der scanner immer die nextLine hat, aber warum führt er das nicht einfach aus?

:confused: Bin grad irgendwie verwirrt :confused:

Greetz

Bartleby
 
Zurück