compc task
なんだかなぁ
つぎのようなマクロを作ってみましたが、「include-classes」がネストできません。
<macrodef name="compile-macro"> <attribute name="debug"/> <attribute name="ofile"/> <attribute name="classes"/> <sequential> <compc debug="@{debug}" output="@{ofile}" as3="true" incremental="true" allow-source-path-overlap="true" include-classes="etc.utils.StringUtil etc.logging.Log"> <load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/> <source-path path-element="${src.dir}"/> </compc> </sequential> </macrodef>
つぎの例をベースに色々試しましたけど、訳がわかりませんでした。
駄目な例1:
<include-classes> etc.utils.StringUtil etc.logging.Log </include-classes>
駄目な例2:
<include-classes>etc.utils.StringUtil</include-classes> <include-classes>etc.logging.Log</include-classes>
対策
flextasksのcompcは使わないで、コマンドラインで命令を組み立てました*1。
<macrodef name="compile-macro"> <attribute name="debug"/> <attribute name="ofile"/> <sequential> <exec executable="cmd.exe" dir="${dist.dir}"> <arg value="/c"/> <arg value="compc"/> <arg line="-load-config ${FLEX_HOME}/frameworks/air-config.xml"/> <arg line="-output @{ofile}"/> <arg line="-source-path ${src.dir}"/> <arg value="-debug=@{debug}"/> <arg value="-as3=true"/> <arg value="-incremental=true"/> <arg value="-allow-source-path-overlap=true"/> <arg value="-include-classes"/> <arg value="etc.logging.Log"/> <arg value="etc.utils.StringUtil"/> </exec> </sequential> </macrodef>
バリエーションとして、次のように、elementを使うとかもあり?
<macrodef name="compile-macro"> <attribute name="debug"/> <attribute name="ofile"/> <element name="class-elem"/> <sequential> <exec executable="cmd.exe" dir="${dist.dir}"> <arg value="/c"/> <arg value="compc"/> <arg line="-load-config ${FLEX_HOME}/frameworks/air-config.xml"/> <arg line="-output @{ofile}"/> <arg line="-source-path ${src.dir}"/> <arg value="-debug=@{debug}"/> <arg value="-as3=true"/> <arg value="-incremental=true"/> <arg value="-allow-source-path-overlap=true"/> <arg value="-include-classes"/> <class-elem/> </exec> </sequential> </macrodef> ・・・・・・・・・・・・・・・・・・・・・・・・・・・ <target name="release" depends="prepare"> <compile-macro debug="false" ofile="${dist.dir}/etclib.swc"> <class-elem> <arg value="etc.logging.Log"/> <arg value="etc.utils.StringUtil"/> </class-elem> </compile-macro> </target>
ちなみに...
compcではなくてacompcを使えば、「load-config」は省略できますね。
<macrodef name="compile-macro"> <attribute name="debug"/> <attribute name="ofile"/> <sequential> <exec executable="cmd.exe" dir="${dist.dir}"> <arg value="/c"/> <arg value="acompc"/> <arg line="-output @{ofile}"/> <arg line="-source-path ${src.dir}"/> <arg value="-debug=@{debug}"/> <arg value="-as3=true"/> <arg value="-incremental=true"/> <arg value="-allow-source-path-overlap=true"/> <arg value="-include-classes"/> <arg value="etc.logging.Log"/> <arg value="etc.utils.StringUtil"/> </exec> </sequential> </macrodef>
*1:「逃げたのね、逃げてしまったのね」「あぁそうさ、逃げたのさ」