Apache AntをWindows上で使うとき、EclipseとCygwinで環境変数の扱いが違うのがやっかいです。Windowsの環境変数の名前は大文字小文字を区別せずに扱われるのですが、取得するときには大文字小文字が混ざって取得されます。
Eclipse上でAntビルドスクリプトを実行すると、大文字小文字が区別されます。Javaの環境では区別されるのでそうなります。ところがCygwin上だと、すべて大文字に統一されてしまいます。
<project name="EnvTest" default="all">
<target name="test">
<property environment="env"/>
<echo>SystemRoot:${env.SystemRoot}</echo>
<echo>SYSTEMROOT:${env.SYSTEMROOT}</echo>
</target>
</project>
これをEclipseで実行すると
test:
[echo] SystemRoot:C:¥Windows
[echo] SYSTEMROOT:${env.SYSTEMROOT}
と表示され、Cygwinだと
test:
[echo] SystemRoot:${env.SystemRoot}
[echo] SYSTEMROOT:C:¥Windows
と表示されます。
すっきりしないのですが、なってしまうものはしょうがないので、次のようなコードで回避しました。
<condition property="envSystemRoot" value="${env.SystemRoot}">
<isset property="env.SystemRoot"/>
</condition>
<condition property="envSystemRoot" value="${env.SYSTEMROOT}">
<isset property="env.SYSTEMROOT"/>
</condition>