Ant で別ディレクトリの build.xml を呼び出すと basedir がズレるのを解消する

Ant の call で別ディレクトリの build.xml を呼び出すと、呼び出し元の build.xml の basedir が適用される。つまり、call で呼び出す build.xml を単体で実行した時と、basedir が狂ってしまう。

これを解消するには、呼び出し先の build.xml に以下のような ${base} を宣言して、${basedir} の代わりにこの ${base} を使うようにする。

<dirname property="base" file="${ant.file}"/>

${ant.file} というのが build.xml 自身のフルパスを返すので、このファイルのディレクトリ部分を取得するため、dirname 要素を使う。

dirname 要素は property 要素と同じ階層に書けば OK。

call によって基準ディレクトリが変わる ${basedir} ではなく、こうやって build.xml のフルパスをパス指定に使えば、call による呼び出しにも対応できる。