Howto debug ANT Tasks

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.

5 Antworten zu Howto debug ANT Tasks

  1. [...] 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 [...]

  2. ant-debug sagt:

    as documented in http://ant.apache.org/manual/running.html simply add “-debug” and/or “-verbose” to ant build task arguments

  3. hexor2k sagt:

    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.

  4. Maik Geßner sagt:

    Frage auf der FPC-Sparte?!

    wie schaut es mit Projekten aus, welche unter Lazarus erstellt werden?

  5. Maik Geßner sagt:

    genauer gesagt für SE x10min

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Log Out / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s

Follow

Bekomme jeden neuen Artikel in deinen Posteingang.