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に入ってるのを発見したのは、全然後の話だったりする。なんでやねん…。
  • 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ファイルが生成されてるんで、そのパスをツリーから選ぶ訳デスナ。


これで、晴れてeclipseGeronimoのコードを泳げる様になった訳デス。


オマケ。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をバリバリ使ってるから、こうなるのかもしんないけど。

*1:っつうか、誰か言ってやってくんないかな。メリケンの使ってるjavacは、.java0000644でもコンパイル出来るのカヨーって。

*2:ビルドしてる時には、file://の記法を忘れてたのは秘密だ。

*3:Celeron 2G ,DDRRAM 512M ,ADSL 10G

*4:.javaやら、.jarやらを勝手に探してくれるなんて、便利過ぎる!