strutsを追え

 先日からいくつかにモジュール分割したstruts-config.xmlからvalidation.xmlを参照させると何故かバリデーションしてくれないという問題に悩まされていた。ブレークポイントを置いてトレースをするが、Strutsの内部まで行ってしまうのでソースコードがないとどうしようもない。
 
 が、jakartaからダウンロードしてきたソースを添付しても、どうやらバージョンが違うのか指し示す行数が全然違う。
 
 それならば、いっそのことソースからStrutsをビルドしてしまおう。
 
 ……と、考えたのが甘かった。
 
 strutsはantでビルドできるようにbuild.xmlが添付されているため、antを使ってbuildを試みる。antはEclipse上の物を利用。
 
 ビルドしてみると、contrib/elが無いよ。というエラーが出る。
 見てみるとcontrib/struts-elとなっている。リネームして一応通るようになったが、次のエラー。
 
 lib/common-beanutils.jarがコピーできないよ。
 
 が、該当のフォルダはちゃんと存在する。ロングファイル名が悪いのかと思い、場所を変えても駄目、何をやっても駄目。
 
 ……諦めました。orz
 
 しかし、その後正攻法でデバッグをするも、やはり不便。再度チャレンジしてみることにしました。
 
 エラーが出るのは以下の箇所。build.xmlの359行目。
 


tofile="${build.home}/library/commons-beanutils.jar"/>
tofile="${build.home}/library/commons-digester.jar"/>
tofile="${build.home}/library/commons-fileupload.jar"/>
tofile="${build.home}/library/commons-logging.jar"/>
tofile="${build.home}/library/commons-validator.jar"/>
tofile="${build.home}/library/jakarta-oro.jar"/>
tofile="${build.home}/library/antlr.jar"/>

 
 意味は、fileの内容をtofileにコピーする、という意味なのでしょうが、antlr.jarだけfailonerror="false"となっています。どうやら失敗してもエラーを出さないようにするオプションみたいです。
 

tofile="${build.home}/library/commons-beanutils.jar"/>
tofile="${build.home}/library/commons-digester.jar"/>
tofile="${build.home}/library/commons-fileupload.jar"/>
tofile="${build.home}/library/commons-logging.jar"/>
tofile="${build.home}/library/commons-validator.jar"/>
tofile="${build.home}/library/jakarta-oro.jar"/>
tofile="${build.home}/library/antlr.jar"/>

 
 ……
 
 通った。(ぉ
 
 ちょっと不安はありますが、struts.jarが出来ています。
 早速組み込んで実行。
 
 ……。
 
 おお。ちゃんと正しい行を示しています。
 
 が、喜びもつかの間。バリデーションに関するエラーはcommons-validatorでやっているようで、こちらのライブラリもコンパイルしないと駄目なようです。orz
 
 そんな時間あるかー、ってことで結局諦めました。
 しかし、validatorがcommons-validatorの中でやっているということが分かったので、こちらのほうの資料を集めれば何とかなりそうな気がします。