Как мне создать скрипт Ant для различных компиляций, основанных на моих выходных данных.ВОЗДУХ против SWF? - PullRequest
2 голосов
/ 23 октября 2011

Как мне создать скрипт Ant для вывода пакетов swfs против air и использовать разные классы во время компиляции в зависимости от желаемого места назначения?

Например, я создаю приложение для Интернета, мобильных устройств и компьютеров. В некоторых случаях мои классы будут использовать только компоненты AIR. Я хочу иметь возможность создавать сценарии сборки ANT, которые не будут включать эти классы при выводе SWF для Интернета. Как мне это сделать?

1 Ответ

3 голосов
/ 23 октября 2011

Вот что я сделал для аналогичной ситуации:

<target name="define.compile.task" depends="initflex">
    <presetdef name="flex.build">
        <mxmlc file="${src.dir}/${src.file.path}" 
                output="${output.dir}/${output.file.path}" ...>
            <compiler.source-path path-element="${src.dir}"/>
            ...
        </mxmlc>
    </presetdef>
</target>

<target name="parametrized.web.build" depends="define.compile.task">
    <flex.build>
        <compiler.define name="CONFIG::AllowAirComponents" value="false" />
    </flex.build>   
</target>


<target name="parametrized.air.build" depends="define.compile.task">
    <flex.build configname="airmobile">
        <compiler.define name="CONFIG::AllowAirComponents" value="true" />
    </flex.build>   
</target>

Затем я мог бы определить цели как

<target name="buildwebclass1">
     <antcall target="parametrized.web.build">
          <param name="src.file.path" value="path/to/MyClass.as"/>
          <param name="output.file.path" value="MyClass.swf"/>
     </antcall>
</target>

Или:

<target name="buildairclass1">
     <antcall target="parametrized.air.build">
          <param name="src.file.path" value="path/to/MyAirClass.as"/>
          <param name="output.file.path" value="MyAirClass.swf"/>
     </antcall>
     <exec executable="${FLEX_HOME}/bin/adt" failonerror="true">
         ... (adt arguments)
     </exec>
</target>

И еслиУ меня есть некоторая фабрика общего кода, которая создает экземпляр класса air только при необходимости, я обертываю его CONFIG::AllowAirComponents { ... }, чтобы мои классы AIR не мешали веб-сборке.

Надеюсь, это поможет!

...