Antファイルに書いたJavaタスクをEclipseでデバッグ実行する手順をメモしました。Javaタスクをリモートデバッグ可能なように起動させ、Eclipseからデバッグ接続します。
適当なプロジェクトとクラスの用意
HelloWorldプロジェクトのsrcディレクトリ直下に下記のようなHelloWorldクラスを用意しました。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
ビルドしてデバッグ実行するAntファイル
HelloWorldクラスをビルドしてデバッグ実行するAntファイル(build.xml)を下記のように書きました。javacタスクではdebug要素をtrue(またはon)を記述します。javaタスクにはXdebug、Xrunjdwpをvalue属性に持つjvmarg要素を追加します。
<?xml version="1.0" encoding="UTF-8"?> <project default="run"> <property name="src" location="./src" /> <target name="compile"> <javac srcdir="${src}" destdir="${src}" debug="true" /> </target> <target name="run" depends="compile"> <java classname="HelloWorld" classpath="${src}" fork="true"> <jvmarg value="-Xdebug" /> <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" /> </java> </target> </project>
デバッグ構成の準備
Eclipseの実行(run)→デバッグ構成(Debug Configurations)を選択します。リモートJavaアプリケーション(Remote Java Application)を選択し、右クリックで起動構成を新規作成します。対象のプロジェクトを入力し、接続タイプは標準(ソケット接続)を選択する。ホスト、ポートはそれぞれlocalhost、8000で適用します。
デバック実行
HelloWorldクラスの適当な箇所にブレークポイントを置きます。次にbuild.xmlのAnt実行を行います。「Listening for transport dt_socket at address: 8000」のメッセージが現れたら、作成したデバッグ構成よりデバッグを行います。ブレークポイントで実行が止まったら成功です。