JUnitタスクにclasspath要素を定義しても無視される件について
http://ant.apache.org/faq.html#delegating-classloader
嵌った.このFAQが詳しい.
何がやりたいかというと,テストスイートの実行の際に失敗あるいはエラーが起きた場合には表示を"BUILD FAILED"にしたいなぁということ.テストの成功・失敗に関わらず終了処理をきっちり行った上でね.
さーどうしたものか.しかし実際に"BUILD FAILED"にしちゃうわけにも行かないし,ごにょごにょ.
Ant1.6.5において3rd-Partyなタスクであるjunitタスクを使う場合には,必要なライブラリは最初から環境変数CLASSPATHに入れておくかあるいは"${ANT_HOME}/lib"にコピーしておくといったような対応をする必要がある.
どちらが楽に出来るだろうと思い,junitタスクを呼び出す前に一時的に必要ライブラリを"${ANT_HOME}/lib"にコピーし,テストが終わったら同ディレクトリから削除するという方法を取ろうとしたのだが….
BUILD FAILED F:\workspace\connector-j-xa-testing\simpletest-jboss\build.xml:225: Unable to delete file F:\apache-ant-1.6.5-bin\apache-ant-1.6.5\lib\jbossxatest.jar
こんな感じでなぜかdeleteできない.いろいろ試してみた結果,どうやら"${ANT_HOME}/lib"にコピッたJARのみ削除できないようだった.
"build.sh"や"build.bat"といったラッパースクリプトを作って解決するしかないのか…?
しかしなんかこんなこと延々とやってると,何でJBossも"testsuite/build.sh"などを作るに至ったのか,なんとなく分かる気がする.うちがヘタレなだけかもだけど,大抵のことは予想通りにいかないしうまくいかない.そこで試行錯誤しながらやってるとある種,必然的にこういう形態になってしまっていっているとかいうような….まあ感慨にふけってる場合じゃないな.
追記メモ
coreloaderはant起動時にlibディレクトリをロードするので途中でCOPYしても意味無い.