S2JDBC-Genのコンパイルをしてみよう
S2JDBC-Genのコンパイルをしてみました。あまり開発環境の構築ってBlogになかったのですが、みなさんソースって触らないのかな?
Javaだと確かに触りにくいので独自に改造したライブラリとか使わないですよね。。。でも改造してから本当に必要な機能であれば本体に取り込んでもらえばいいと思うんですよね。
準備
環境として以下のものが必要になります。今回はWindows上に構築いています。
- JDK1.5
- Apache Maven2
- Subversionクライアント
注意が必要なのはJDKは1.6だとコンパイルできません! 1.5を入れましょう。1.6で追加されたJDBC系の関数とかを継承などで実装していないからエラーがでたと思いました。
Maven2のダウンロード
http://maven.apache.org/download.html
Maven2はWindowsでもLinuxなどでも同じファイルで動かすことができます。中身にWindows用のbatスクリプトとLinux用のshスクリプトが入っているだけなんだけれどね〜
Subversionのダウンロード
コマンドラインでやるのであれば、ここから落とします。私はコマンドラインが好きなのですが、入っていなかったので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-genとs2jdbc-gen-itフォルダがあるので、中にあるs2jdbc-genのみチェックアウトして利用します。seasar2の内部のファイルを利用していますので、SVNの階層とは違いseasar2とs2jdbc-genが同じ階層にいないとだめみたいです。
こんな感じで大丈夫かな? コマンドラインだけで作業をする場合にはs2jdbc-genだけで大丈夫ですが、Eclipseで作業をする場合にはseasar2とs2-tigerに依存しています。
内容はseasar2にs2jdbc本体と、s2-tigerにs2jdbcの拡張部分の一部が入っています。ソースを追うのに必要になりますので、あったほうがいいかな。
**事前準備
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 で遊んでみました!