airxmail/ airxzip などのswcをbuildするときに、antファイルを使っているのだが、
FLEX SDKの場所をなんとかいちいち直接指定せずに、自動的にとれないものかなーと思っていたが、
やっと見つけたので、その記録です。
ちなみに、前提としてFlash Builder4 ( Flex Builder 3 ) on Windows で確かめています。
また、私は単にBuildをするだけの目的の時には、Linuxのコマンドだけでも作りたいと思っています。
そんな、利用でもいちいちFLEX SDKの場所の指定をbuild.xmlに記述しないようにします。
では、記述方法です。
<!-- 環境変数をenvとして使う -->
<property environment="env" />
<!-- デフォルトの設定 -->
<property name="FLEX_SDK" value="C:\Flex\sdk\3.5.0.12683" />
<condition property="FLEX_HOME" value="${env.FLEX_HOME}">
<isset property="env.FLEX_HOME" />
</condition>
<!-- Flash Builder 内のANTで実行されているならば、 Flash Builder内のSDKが使われる -->
<condition property="FLEX_HOME" value="${application.home}">
<isset property="application.home" />
</condition>
のような感じです。
まず初めのFLEX_SDKの指定は、デフォルトの指定です。
次からが、大切です。
<condition property="FLEX_HOME" value="${env.FLEX_HOME}">
<isset property="env.FLEX_HOME" />
</condition>
これは、環境変数”FLEX_HOME”があるならば、build.xml上のFLEX_HOMEの変数にその値を設定する。
という指定です。
私はWindowsでは環境変数が非常に使いづらいの、環境変数を切り替えるということをしませんが、
Linuxでは環境変数を切り替えるのは簡単です。
export FLEX_HOME=/usr/local/flex4.1; build;
とすればいいだけなのですから・・・・
もちろん、LinuxにFlex SDKのインストールもJava,Antのインストールがすんでいることが前提です。
これで、Linux向けのFLEX_SDKの指定はできたという事です。
そして、最後の部分です。
<!-- Flash Builder 内のANTで実行されているならば、 Flash Builder内のSDKが使われる -->
<condition property="FLEX_HOME" value="${application.home}">
<isset property="application.home" />
</condition>
どうやら、Builder 内でAntを実行している時には、${applicaiton.home} で
C:\Program Files (x86)\Adobe\Adobe Flash Builder 4\sdks\4.1.0
なんていう値がとれるようです。
ちなみに、ここで注意点ですが、あくまでもAntをBuilder内の
「ワークスペースと同じJREで実行」
で実行をしている場合です。
ここがちょっとした注意点です。
さらになぜか、使っているSDKを変更したときにその変数が見つからないことがあります。
このときに、外部ツールのAntの部分を見て、そこから一度実行をすると変数が設定されています。
(なぜなのか、全くわかりません。この行為の過程でなにか解決されているだけかもしれませんが、
私は、その行為をすると問題なくなりますので、それ以上、深く突っ込んで調べないことにしています。)
ちなみに、Flash Builderにも、Flex BuilderにもAntは入っていません。
導入するときには
こちら
を参考にしてください。
Flex Builder 3の時の記述ですが、基本的にはFlex Builder4でも変わりません。
ちなみに完全なbuildファイルがみたいなーという方はこちらをどうぞ。
airxmailのswcを作るときのbuildファイルになっています。


