S2JDBC-Genのコンパイルをしてみよう

S2JDBC-Genコンパイルをしてみました。あまり開発環境の構築ってBlogになかったのですが、みなさんソースって触らないのかな?

Javaだと確かに触りにくいので独自に改造したライブラリとか使わないですよね。。。でも改造してから本当に必要な機能であれば本体に取り込んでもらえばいいと思うんですよね。

準備

環境として以下のものが必要になります。今回はWindows上に構築いています。

注意が必要なのはJDKは1.6だとコンパイルできません! 1.5を入れましょう。1.6で追加されたJDBC系の関数とかを継承などで実装していないからエラーがでたと思いました。

JDK1.5のダウンロード

http://java.sun.com/j2se/1.5.0/ja/download.html

えーっと、2009年10月30日でサポートが終わるみたいですね。

Maven2のダウンロード

http://maven.apache.org/download.html

Maven2WindowsでもLinuxなどでも同じファイルで動かすことができます。中身にWindows用のbatスクリプトLinux用のshスクリプトが入っているだけなんだけれどね〜

Subversionのダウンロード

http://subversion.tigris.org/

コマンドラインでやるのであれば、ここから落とします。私はコマンドラインが好きなのですが、入っていなかったのでTortoiseSVNを利用しました。

環境設定

Path=(これまでのPath);C:\apache-maven\bin;C:\Program Files\Java\jdk1.5.0_16\bin
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_16
M2_HOME=C:\apache-maven\bin

こんな感じの環境設定をします。Pathは従来の後ろに追加します。

ソースファイルのチェックアウト

c:
cd \
mkdir prog
cd prog
mkdir seasar
cd seasar

svn checkout https://www.seasar.org/svn/s2container/trunk/seasar2
svn checkout https://www.seasar.org/svn/s2container/trunk/s2jdbc-gen/s2jdbc-gen
svn checkout https://www.seasar.org/svn/s2container/trunk/s2-tiger

追記:s2jdbc-genのみ中にs2jdbc-gens2jdbc-gen-itフォルダがあるので、中にあるs2jdbc-genのみチェックアウトして利用します。seasar2の内部のファイルを利用していますので、SVNの階層とは違いseasar2s2jdbc-genが同じ階層にいないとだめみたいです。

こんな感じで大丈夫かな? コマンドラインだけで作業をする場合にはs2jdbc-genだけで大丈夫ですが、Eclipseで作業をする場合にはseasar2とs2-tigerに依存しています。

内容はseasar2s2jdbc本体と、s2-tigers2jdbcの拡張部分の一部が入っています。ソースを追うのに必要になりますので、あったほうがいいかな。

**事前準備

C:\Prog\seasar\s2jdbc-gen\s2jdbc-gen\pom.xml

上記のファイルを編集する必要があります。seasar2とかはすでに記述されているのですがseasarプロジェクトのMavenサーバーの設定が入っていないんですよね。だからapacheの標準のMavenサイトにダウンロードしに行って、存在しませんとエラーになってしまいます。

追記:階層を合わせればこのエラーはでませんので、編集する必要はありません。

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/org/seasar/container/s2-container-pro
ject/2.4.30/s2-container-project-2.4.30.pom
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

GroupId: org.seasar.container
ArtifactId: s2-container-project
Version: 2.4.30

Reason: Unable to download the artifact from any repository

  org.seasar.container:s2-container-project:pom:2.4.30

from the specified remote repositories:
  central (http://repo1.maven.org/maven2)

ちなみに上記みたいなエラーになります。

  <repositories>
    <repository>
      <id>maven.seasar.org</id>
      <name>The Seasar Foundation Maven2 Repository</name>
      <url>http://maven.seasar.org/maven2</url>
    </repository>
  </repositories>

seasar2のpom.xmlなどから上記の部分をコピーしてきてs2jdbc-genのpom.xmlに追加します。なんで最初から入っていないんだろう?

テストをする

mvn

いろいろなファイルをダウンロード始めたら環境が整っている証拠です。このコマンドではダウンロード以外されませんので、次に進みます。

パッケージを作成

mvn package

内部でダウンロード、コンパイル、テスト、パッケージを行います。コンパイルのコマンドもあるけれど、とりあえず全部パッケージでもいいかな?

テストが重いと感じた場合にはテストを省略することもできます。

http://www.techscore.com/tech/ApacheJakarta/Maven/index.html

上記のようなMaven2の解説サイトが結構ありますので、詳しくはそちらを参照してください。

パッケージをプロジェクトにコピーする

s2jdbc-gen/target

上記のフォルダにjarファイルが2つできていますので、通常のをlibフォルダにsauceと書いてある方をsauceフォルダに入れてください。

プロジェクトでテスト実行

実行して正しい動作か検証します。この辺はコピーとかしなくても動くようにとかはできると思います。s2jdbc-genの場合にはantなんでtomcatの再起動がいらないのですが、Teedaとかの場合には再起動しないと読み込みなおさないのですごく面倒です。。。

感想

ダウンロードの場所さえちゃんと設定すればあとは特に問題はでないと思います。Seasarシリーズは大抵同じ手順でいけると思います。

ちなみにs2jdbcは主にtrunk直下で作業をしているようですが、Teedaの場合にはbranches以下で主に作業しているようです。どちらが新しいのかを確認してから必要な場所をチェックアウトしてみてください。

スナップショットは

http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2jdbc-gen/

この辺にあるので、通常はこっちで最新の機能をチェックするので十分かな? 日次ビルドとかじゃないので本当の最新はSVNから自分でビルドしてみてはどうでしょうか?

ただ。。。実案件では改造したのは使いにくいので、触ってもわりと安全な s2jdbc-gen で遊んでみました!