Tomcat のソースコードを Eclipse のプロジェクトとしてインポートする

Tomcatソースコード呼んだり、デバッグする際に便利かなと思い、TomcatソースコードEclipse のプロジェクトにインポートするってことをしてみました。

ドキュメントとしては以下あたりの内容になります。

Apache Tomcat 8 (8.0.26) - Building Tomcat
https://tomcat.apache.org/tomcat-8.0-doc/building.html#Building_with_Eclipse


※ 以下を行なうにあたり Ant が必要なのでインストールしておいてください ( ドキュメント的には 1.9.5 以上みたいですが、今回使ったのは 1.8.4。まぁ、結果として無事動いったっぽいのでいいでしょう・・・ )。


1. Tomcatソースコードをダウンロードする


現時点 ( 2015/10/02 ) 最新版の 8.0.26 のソースコードを使用することにしました。

Apache Tomcat - Apache Tomcat 8 Downloads
http://tomcat.apache.org/download-80.cgi

適当なディレクトリに展開しておきます。以下 %TOMCATSRC% とします。


2. Ant のターゲット ide-eclipse を実行する


依存するライブラリダウンロードしたり、Eclipse のプロジェクトやクラスパス作ったりしてくれるターゲット ide-eclipse が用意されているのでこいつを実行します。

cd >%TOMCATSRC%
ant ide-eclipse


※ デフォルト設定だと依存するライブラリが C:\usr\share\java にダウンロードされるので、場所を変えたい場合は build.properties.defaultbase.path を変更しておきます。

base.path=/usr/share/java


無事終了すれば base.path のディレクトリに cglib-2.2.3 等々なフォルダが、%TOMCATSRC% に .classpath、.project というファイルができているはずです。


3. Eclipse のクラスパス変数の設定を行なう


[Window] - [Preferences] - [Java] - [Build Path] - [Classpath Variables] から以下を追加する。

* TOMCAT_LIBS_BASE に base.path に設定したディレクトリ
* ANT_HOME に Ant インストールしたディレクトリ


4. Eclipse にインポートする


[File] - [Import] で [Existing Projects into Workspace] を選択して、[Select root directory] に %TOMCATSRC% を設定する。すると [Projects] の箇所に tomcat-8.0.x と出てくるのでチェック入っていること確認して [Finish] をクリックする。

パッケージエクスプローラtomcat-8.0.x が表示されていればインポート成功です。


5. Eclipse から Tomcat を起動してみる


start-tomcat.launch、stop-tomcat.launch ( %TOMCATSRC%\res\ide-support\eclipse 配下 ) を用意してくれているみたいです。ただ、デフォルトのまま実行すると、以下のメッセージ出て正常に起動されませんでした。

警告: Unable to load server configuration from [C:\workspace44\apache-tomcat-8.0.26-src\output\build\conf\server.xml]
10 02, 2015 1:21:46 午前 org.apache.catalina.startup.Catalina start
重大: Cannot start server. Server instance is not configured.


server.xml 探しにいくディレクトリがまずそうなんで、以下の箇所修正してあげると上手くいきました。

( 修正前 )
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dcatalina.home=${project_loc:/tomcat-8.0.x/java/org/apache/catalina/startup/Bootstrap.java}/output/build"/>
( 修正後 )
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dcatalina.home=${project_loc:/tomcat-8.0.x/java/org/apache/catalina/startup/Bootstrap.java}"/>

※ 実行は start-tomcat.launch、あるいは、stop-tomcat.launch を [右クリック] - [Run As] - [start-tomcat] / [stop-tomcat] から。


ちなみにアプリケーションのデプロイは普通に %TOMCATSRC%\webapps に .war を置いてあげるだけで大丈夫です。


以上になります。