Geronimoをビルドする
まぁ、大体の事はココに書いてあります。その通りにやれば出来る筈…デスガ。
まずは、ビルドする為の環境とか。
- Maven 1.0.2 必須。ダウンロード
- J2SE1.4必須。ダウンロード
- javax.management.ObjectNameって、geronimo-j2ee-management_1.0_spec-1.0.jarに含まれてないんよ。
J2EE1.4のAPIには含まれてるんだけどネ。 - javax.managementパッケージって、J2EEからJ2SDKに移動してるんネ。面倒だなぁ…。
- mx4j-3.0.1.jarに入ってるのを発見したのは、全然後の話だったりする。なんでやねん…。
- javax.management.ObjectNameって、geronimo-j2ee-management_1.0_spec-1.0.jarに含まれてないんよ。
- Subversionクライアント。あればヨシ。
- 例えば、TortoiseSVNトカ。
- と言うか、ソースコードリリースからビルド出来んかったのよ。
GenericServiceEndpoint.java0000644みたいなファイルがあってさ。
罠みたいなのを張るのは勘弁して欲しいな…。*1
- Apache Geronimo バイナリリリース。あればヨシ。
- ビルド中に、ファイルをダウンロードしにいってタイムアウトしたりするとビルドが止まるんで、
バイナリリリースに含まれてるMavenリポジトリを使う様にするか、
ローカルリポジトリにガッツリコピーするのデス。 - Windowsなら、%GERONIMO_HOME%/repositoryを、C:/Documents and Settings/taichi/.maven/repositoryあたりにコピーする感じ。
taichiの所は、ログインしてるユーザ名デスゼ、お間違え無き様。 - SVNからチェックアウトして、geronimo/etc/project.propertiesのmaven.repo.remoteを修正してもエエケドネ。*2
- ビルド中に、ファイルをダウンロードしにいってタイムアウトしたりするとビルドが止まるんで、
ここまで、準備が出来たら後は、
からリリース済みのブランチをチェックアウトするですよ。
まぁ、trunkからチェックアウトしてもエエんだけど、僕はヘタレなので、ブランチから。
チェックアウトが終わったら、さあ、長い旅が始まるデスヨ。
まぁ、
maven
ってして、風呂にでも入るがよろし、
僕の自宅のマシン*3では2時間じゃ終わらんかったでなぁ。
Mavenでのビルドが終わったら、今度は、eclipseのプロジェクトにしてコードを読み易い様にするます。
本来ならば、modulesディレクトリ以下にある各ディレクトリ1つづつを、
eclipseプロジェクトにするのが、妥当なやり方なんだけど、面倒なので、全部一まとめにしてしまいましまします。
ちなみに、
maven m:eclipse
ってすると、各ディレクトリに、eclipse用の.projectと.classpathファイルを作ってくれます。
読みたいmoduleが決まっているなら、そっち方がエエと思われ。
その時に気をつけないといけないのは、ecliseの環境変数にMAVEN_REPOってのが無いとアカン様になってる感じ。
MavenIDEが入ってると自動設定されるんかな。よくワカンネ。
eclipseの環境変数を弄るんだったら、
Preferences > Java > Build Path > Classpath Variable
今度は、Mavenのローカルリポジトリから、repositoryディレクトリをゴッソリgeronimoのビルドディレクトリにコピーするデスヨ。
その時に、末尾がSNAPSHOT.jarとかなってるのを、コピーした後のディレクトリから消しておくとグー。
更に、Mavenでビルドした結果出来たjarファイルをゴッソリ消します。
jarファイルだけ消すのがポイント。
んで、後は、eclipse様のプロジェクト新規作成のウィザードにgeronimoのディレクトリを食わせれば、万事オッケー。*4
だと良いんだけど、そうでもない。
Mavenでのビルドプロセス中に、〜builderってモジュールは、XML Schemaからjavaのコードとclassを自動生成してるんだな。
javaのコードだけ作ってるんなら、良いんだけどclassしか作って無いのもあるからタチが悪い。
仕方無いので、出来たclassが格納されてるディレクトリを「Add class Folder」ってボタンを押して、classpathに追加シマス。
例えば、j2ee-builderってmoduleだと、
modules/j2ee-builder/target/xmlbeans-classes
みたいな感じで、classファイルが生成されてるんで、そのパスをツリーから選ぶ訳デスナ。
これで、晴れてeclipseでGeronimoのコードを泳げる様になった訳デス。
オマケ。Mavenのビルド順から分る事だけど、
module間の依存関係は大体こんな感じらしい。
Activation → Kernel → Common → Util → System → Deployment → Core → Management API → J2EE → J2EE Schema → Service :: Builder → Maven Dependency Plugin → Security → Web Services → Axis → Naming → Deploy :: Common Confi → Test :: DDBeans → Transaction → Connector → Security :: Builder → J2EE → Naming :: Builder → Connector :: Builder → Axis :: Builder → Client → Client Builder → Console Web → Configuration Converte → Web :: Builder → Deploy :: JSR-88 → Deploy :: CLI Tool → Derby → Directory → Deploy :: Hot Deployer → JavaMail Transport → Jetty → Jetty :: Builder → JMX Remoting → Mail → Scripts → Timer → Tomcat → Tomcat :: Builder
面白いのは、CommonやUtilってモジュールよりもKernelやActivationってModuleの方が前にある事。
まぁ、jakarta-commonsをバリバリ使ってるから、こうなるのかもしんないけど。