Ant 1.8から出るincludeAntRuntimeに関するワーニング
Antを1.8にしたら、以下のワーニングが出るようになった。
warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
includeantruntimeは、Antのランタイムライブラリをクラスパスに含むかという設定らしく、これがデフォルトでtrueらしい。
これは知らなかった。
つまりjavacのクラスパス設定に依存ライブラリの漏れがあったとしても、Antのランタイムライブラリに入っていればビルドエラーにならなかったって事だ。
これが以前からtrueだったために、Antのランタイムライブラリに依存するようなクラスパスを設定していると、環境によってビルドが失敗するなどが発生していたのかもしれない。
それをわからせるためにワーニングを出すようにしたんだろうけど、そもそもAntのランタイムライブラリをクラスパスに含むのがデフォルトでtrueなのが駄目なんじゃないか?
そんな実行環境に依存する様なbuild.xmlを書いている方が悪いんだろう。
クラスパスに必要な物が設定されてないのだから、そこはビルドエラーになって欲しい。
結局の所、javacタスクにincludeantruntime="false"を設定するだけで良いのだが、なんか腑に落ちない。
どうせならデフォルトをincludeantruntime="false"に変更して欲しかった。
それならbuild.xmlのクラスパス設定に問題がある人だけがエラーになり、以前から正しくクラスパスを設定している人は何も変更しなくて良いのに…
このせいでjavacタスクにincludeantruntime属性は必須になってしまった。
でもまぁ既に公開しているもののバージョンアップでデフォルト値を変更するってのは普通に考えたら無しか…
最初に間違って公開してしまうと、本来あるべき姿にするのには時間がかかるね。
Ant 2.0とかでデフォルト値が変わるとかはありえるかな?