понедельник, 31 октября 2011 г.

ANT / Как собрать в одном swc все классы? / UPDATED


Задача

Как с помощью compc собрать в одном swc все классы?

Решение

Казалось бы что тут сложного, однако у Adobe на этот вопрос не найдется ответа, пришлось погуглить и использовать следующее решение:

<target name="build.swc">
    <fileset dir="${src}" id="sources">
        <include name="**/*.as"/>
    </fileset>

    <pathconvert pathsep=" " property="classes" refid="sources">
        <chainedmapper>
            <globmapper from="${src}/*" to="*"/>
            <mapper from="*.as" to="*" type="package"/> 
        </chainedmapper>
    </pathconvert>

    <echo message="classes is set to = ${classes} ."/>

    <compc debug="${debug}" 
        include-classes="${classes}" 
        keep-generated-actionscript="false" 
        output="bin\${lib.name}.swc">

        <incremental>${incremental}</incremental>
 
        <source-path path-element="${src}"/>
  
        <target-player>${flashplayer.version}</target-player>
        <use-network>${use.network}</use-network>
    </compc>
</target>

понятно, что значение для параметров:
${src}
${lib.name}
${debug}
${incremental}
${flashplayer.version}
${use.network}
придется объявить

PS !

но сходу решение тоже может не заработать, дело в том, что инструкция globmapper чувствительна к наклону слэша, и если вы работаете на Windows как и я. Следует писать:
<globmapper from="${src}\*" to="*"/>

PPS. Лучшее решение

Cпасибо Алексей Аникутин, нашлось решение намного проще:

<compc debug="${debug}" 
        keep-generated-actionscript="false" 
        output="bin\${lib.name}.swc">

  <incremental>${incremental}</incremental>
 
  <source-path path-element="${src}"/>

  <!-- вместо include-classes используем include-sources -->
  <include-sources dir="${src}" includes="*"/>

  <target-player>${flashplayer.version}</target-player>
  <use-network>${use.network}</use-network>
</compc>
подробнее можно прочитать у Adobe: http://livedocs.adobe.com/flex/3/html/anttasks_4.html#207464

Комментариев нет:

Отправить комментарий

Press Any Key...