バッチファイルからのAntの実行

バッチファイルで、Antを実行する処理を書いて実行すると、
そのAnt実行の次の行以降のバッチファイルの処理が実行されない。
というよりかは、Antの実行が終了するとバッチファイルの処理が残っていても
そこで終わってしまう。


まずはこの状況から。
ビルドファイル(buildTest.xml)は、こんな内容。


<?xml version="1.0" encoding="Shift_JIS"?>






そして、バッチファイル。


ant -f buildTest.xml
echo Hello BATCH


これを実行すると・・・


Buildfile: buildTest.xml

echo:
[echo] Hello Ant

BUILD SUCCESSFUL
Total time: 0 seconds

というわけで、バッチファイル内のecho文が実行されていないことがわかる。




解決方法は、どうやらAnt実行時に、callを付ければいいらしい。
つまり、こんな感じ。


call ant -f buildTest.xml
echo Hello BATCH


この実行結果。


Buildfile: buildTest.xml

echo:
[echo] Hello Ant

BUILD SUCCESSFUL
Total time: 0 seconds
Hello BATCH

おぉ、バッチファイルのechoが実行されてるっす。


というわけで。実は理由はよくわからん。
Ant起動といっても内部的にはant.batを実行しているだけであり、
バッチファイルを起動するときにcallを付けると、意味がちょっと変わるらしい。
詳しくは知らん。