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 による呼び出しにも対応できる。