2
我正在編寫一個用於編譯flex項目的ant文件(但這個問題也可能適用於非flex的ant腳本)。任何參數化方式是否要在ant中追加內部元素?
我有幾個目標,有看起來像這樣的:
<target name="first">
<mxmlc file="${src.dir}/FirstClass.as" output="${output.dir}/First.swf" ...identical_compiler_attributes...>
...identical_compiler_inner_elements...
<compiler.define name="AN_ATTRIBUTE" value="A_VALUE" />
</mxmlc>
</target>
<target name="second">
<mxmlc file="${src.dir}/SecondClass.as" output="${output.dir}/Second.swf" ...identical_compiler_attributes...>
...identical_compiler_inner_elements...
<!-- no additional compiler.define calls needed -->
</mxmlc>
</target>
我想通過<antcall>
Ant任務來避免常見的mxmlc的屬性和內部元件的重複,所以我想出了這樣的事情:
<target name="first">
<antcall target="helper_target">
<param name="src.file" value="FirstClass.as"/>
<param name="output.file" value="First.swf"/>
</antcall>
</target>
<target name="second">
<antcall target="helper_target">
<param name="src.file" value="SecondClass.as"/>
<param name="output.file" value="Second.swf"/>
</antcall>
</target>
<target name="helper_target">
<mxmlc file="${src.dir}/${src.file}" output="${output.dir}/${output.file}" ...identical_compiler_attributes...>
...identical_compiler_inner_elements...
<!-- WHAT DO I DO ABOUT THE compiler.define?? -->
</mxmlc>
</target>
這很好地解決了大部分重複。但我該怎麼處理<compiler.define>
和mxmlc調用之間不同的其他內部元素?內置if
螞蟻的機制並沒有幫助我在這裏 - 我不能在一個mxmlc元素的中間調用一個目標....
任何想法? (我知道ant-contrib有某種機制,寧願有一個純粹的ant解決方案,甚至不確定ant-contrib是否會在這裏起作用)。
謝謝!這真的很有幫助! – yonix