Jeder, der schon einmal selbst einen ANT Task geschrieben hat, kennt das Problem:
Man kann zwar ANT Scripts debuggen (innerhalb von Eclipse), in einen Task kann man aber nicht springen. Falls der Task wegen Fehlern abbricht, sieht man meist nur eine lapidare Fehlermeldung. Eine Hilfe wäre es zwar, Debugmeldungen via sysout auszugeben, schön ist das jedoch nicht.
Abhilfe schafft hier der Java Remote Debugger: Da ANT selbst eine Java-Anwendung ist, kann man diese im Debug-Modus starten. Zusätzlich meldet man diese Anwendung noch an einem Netzwerksocket als Remote Application an. Danach kann man von außen mittels einer eigenen Debugging-Instanz auf die Anwendung zugreifen und auf alle ihrer Breakpoints reagieren. Das folgende Beispiel bezieht sich auf die Eclipse IDE, mit anderen IDEs sollte es aber auch funktionieren.
So, nun das ganze mal als Code:
echo off
set ECLIPSE_HOME=""
set WORKSPACE=""
set PROJECT=""
%ECLIPSE_HOME%\eclipsec.exe -nosplash -data %WORKSPACE%
-application org.eclipse.ant.core.antRunner
-buildfile %WORKSPACE%\%PROJECT%\build.xml
-vmargs -Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
echo on
ANT wird via Batch-File als Eclipse-Headless-Application gestartet und bekommt zusätzlich die Parameter für Remote Debugging angegeben (-Xrunjdwp:…). Dann erstellt man in Eclipse eine neue DebugConfiguration und wählt als Typ Remote Java Application. Weitere Parameter müssen nicht verändert werden. Nach dem Start der Batchfile erscheint eine Console mit den Ausgaben der ANT-Anwendung. Wenn nun die DebugConfiguration gestartet wird, hängt diese sich an den Remote Task an. Hat man nun in einem selbst geschriebenen ANT Task einen Breakpoint, so stoppt die Anwendung genau an diesem Punkt und wechselt in die Debug-Perspektive.
12. November 2008 um 19:50
[...] liegt das Howto zu den OSGI-Declarative Services mit 156 vorne, dicht gefolgt von dem Howto zum Debuggen von ANT-Tasks mit 107. Platz 3 belegt überraschenderweise der Kalman Filter, anscheinend gibt es noch viel mehr [...]
3. Mai 2009 um 04:10
as documented in http://ant.apache.org/manual/running.html simply add “-debug” and/or “-verbose” to ant build task arguments
3. Mai 2009 um 14:40
Yes, but it is not the same, isn’t it? What I wanted was a real debugging of the ANT task with the Eclipse-Debugger. The command line options are only about printing debugging information.