Настройка сборки Flex 4.14 проекта с использованием flexmojos 7.*

    Исходные данные:
    • Flex проект 100k+ строк
    • 6 модулей swc, собираются в один swf
    • FlexSDK 4.9.* + flexmojos 4.2-beta

    Было принято решение, что проект пора обновить и перейти на последний (на момент написания статьи) FlexSDK 4.14.

    Хотел бы сразу заметить, что варианты кроме Flexmojos не рассматривались, так как проект уже работал на нем и полностью новое решение не интересовало.

    Итак, для начала надо было определиться, какую версию использовать.
    Список версий на сайте плагина содержал версии: 6 (немного документации) и 7 (пустая страница с документацией).
    Также на странице github/flexmojos есть список бранчей, где можно было посмотреть когда какой бранч был обновлен.

    Не смотря на то, что последний бранч, помеченный «стабильным» был flexmojos-6.x было принято решение использовать flexmojos-7.x, так как работа над ним ведется активно в отличии от предыдущих версий.

    Настройка тестового проекта


    Шаг №1


    Установка FlexSDK

    На сайте apache.flex выбираем SDK, качаем, ставим.

    Шаг №2


    Мавенизация FlexSDK

    Делается при помощи flex-utilites
    > git clone https://git-wip-us.apache.org/repos/asf/flex-utilities.git
    > cd mavenizer
    > mvn package

    Пошаговых инструкций было найдено много, но почти все они были старые и шаги описанные в них не работали. Наиболее свежая инструкция была найдена на сайте ApacheFlex\SDKUtilites. Один из шагов внутри Building the Mavenizer был указан Checkout the «develop» branch. Делать этого не надо. Внутри develop branch нет .pom файлов и собиратся там нечего.

    Далее сделать все, что указано в разделе Using the Mavenizer

    Важно
    Правильная команда
    > java -jar [home]/core/target/flex-sdk-converter-1.0.0-SNAPSHOT.jar "[sdkhome]" "[fdktarget]"

    Неправильная команда
    > java -cp target/flex-sdk-converter-1.0.jar SDKGenerator "{sdkhome}" "{fdktarget}"

    Почти все статьи содержали команды в которых использовался путь /target (без /core) и SDKGenerator — это все неверно.

    В результате из папки с мавенизированным SDK файлы копируются в локальный maven репозиторий.
    > mv {fdktarget} {mavenpath}/.m2/repository

    Шаг №3


    Настройка проекта

    Для начала создадим пустой проект
    > mvn archetype:generate -DarchetypeGroupId=net.flexmojos.oss -DarchetypeArtifactId=flexmojos-archetypes-application -DarchetypeVersion=7.0.1

    Откроем pom.xml и поменяем версии не нужные нам.
    В нескольких местах (версию можно проверить в maven репозитории)
    <version>4.14.1.20150325</version>
    

    Обновим версию playerglobal
    <groupId>com.adobe.flash.framework</groupId>
    <artifactId>playerglobal</artifactId>
    <version>16.0</version>

    Добавим репозитории для FlexUnit
        <repositories>
          <repository>
             <id>flex-mojos-repository</id>
             <url>http://oss.sonatype.org/content/repositories/releases</url>
             <releases>
                <enabled>true</enabled>
             </releases>
             <snapshots>
                <enabled>false</enabled>
             </snapshots>
          </repository>
       </repositories>
       <pluginRepositories>
          <pluginRepository>
             <id>flex-mojos-plugin-repository</id>
             <url>http://oss.sonatype.org/content/repositories/releases</url>
             <releases>
                <enabled>true</enabled>
             </releases>
             <snapshots>
                <enabled>false</enabled>
             </snapshots>
          </pluginRepository>
       </pluginRepositories>
    

    Проверим работает ли компиляция:
    > mvn clean compile

    Запустим .swf из папки /target. Должно отобразиться Hello World!

    Готово.

    Пример работающего проекта содержащего в себе сборку библиотеки swc и приложения можно посмотреть на github/flex-maven-demo.

    Полезные ссылки:
    1. habrahabr.ru/post/178997 — сравнение нескольких вариантов сборки в maven
    2. flexmojos.atlassian.net/wiki/display/FLEXMOJOS/Home — wiki по flexmojos

    Комментарии 2

      0
      Здорово, я остановился на том, что не смог найти флекс сдк в репозитории новее 4.6.
        0
        К сожалению только сейчас заметил комментарий.
        Писал статью давно и дальше "игр" с ней не пошло. В продакшн остался старый (работающий) flexsdk.

        Из того, что помню, flexsdk ставился с сайта Apache.flex через инсталятор (написанный на Air).
        Увы, дальше самостоятельный поиск :)

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое