maven2をEclipseでリモートデバッグする方法

少し前にmaven2にはまってた頃に知ったんですがmaven2Eclipseでリモートデバッグする方法のご紹介。僕は正直静的にコードを読んでもあまり理解できないことが多く実際に動かしながらじゃないと辛いので重宝してます。社内のハッカーな方々はデバッガなんて必要ないそうですがシンジラレナイ…。元ネタはここ

前提

mvn.batの修正

C:\>mvn --version
Maven version: 2.0.6
  • %MAVEN_HOME%\bin\mvn.batをコピーしてmvn-debug.batという名前で保存する。
  • mvn-debug.batを開く
  • 30行目付近(maven2.0.6の場合は32行目)の以下の記述を
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

コメントアウトして以下のようにする。

set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
  • 以下のようにして実行してみると8000番ポートで待ち受けるようになる
C:\>mvn-debug --version

C:\>set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt
_socket,server=y,suspend=y,address=8000
Listening for transport dt_socket at address: 8000

maven2ソースコードのチェックアウト

svn co http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.6/

Eclipsemaven2ソースコードを読み込むための設定

  • Eclipsemaven2用の変数を追加するために以下を実行(追加済みなら必要なし)
mvn -Declipse.workspace="${eclipse.workspace}" eclipse:add-maven-repo

※${eclipse.workspace}にはeclipseのworkspaceへのパスを指定

mvn eclipse:eclipse

Eclipsemaven2ソースコードを読み込む


コンパイルエラーが出なければOK

Eclipsemaven2のリモートデバッグ用のプロジェクトを作成

  • 新規 -> プロジェクト -> 一般 -> プロジェクト
  • プロジェクト名に「maven-debug」と入力


リモートデバッグ用の設定

  • maven-debug」プロジェクトを選択状態で実行->構成及びデバッグ->リモートJavaアプリケーションを選択
  • 右クリック->新規で新規構成を作成
  • 名前に「maven-debug」と入力

  • ソースタブを選択し、追加ボタンを押して、先ほど追加したプロジェクトすべてを選択する。


リモートデバッグ実行

  • 適当なmaven2コマンドを叩く(例 mvn install等)
  • 8000番ポートで待ち受けてとまるのでとまったら、Eclipse側で「デバッグ」ボタン押下

最後に

  • こんなマニアックなネタだけどmaven2のpluginとか作るときに既存pluginの動作を追いかけるときなど役立つかも?。ちなみにmaven2ソースコードをチェックアウトした以降の手順についてスクリーンキャストを作ろうとして途中で面倒になって投げたのがあるので晒しておきます。途中まで作ったスクリーンキャスト