С выходом Maven 3 специально под него Flexmojos был переписан заново, практически с нуля. И получил номер версии 4. Релиза, правда, еще нет, есть бета-версии.
И я решил попробовать это дело в новом проекте. В рамках общего курса ухода от велосипедов и стандартизации всех тулов и процессов в разработке, я решил уйти от форка Develar (оказалось, что не на долго, быстро вернулся назад) и освоить стандартную ветку flexmojos.
Сейчас не будет какого-то глубокого обзора, а просто некоторые впечатления от попытки использовать эту версию.
Итак, в super pom указываем версию
<flexmojos.version>4.0-beta-3</flexmojos.version>
И подключаем репозиторий:
<repository>
<id>sonatype-repository</id>
<url>https://repository.sonatype.org/content/groups/flexgroup/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
Вот и вся разница. Целиком pom можно посмотреть, например, здесь. А pom модуля, соответственно, здесь.
Вообще настроить новый проект с нуля довольно легко. (А большой старый проект переделывать под flexmojos 4 нет никакого смысла).
Из позитивного:
ну и все, пожалуй.
Из негативного:
Я взял за правило большинство ресурсов выносить в отдельный swc модуль. Это существенно ускоряет сборку в обычном рабочем цикле, ибо компилятору не нужно пережевывать эти ресурсы в остальных модулях. Обычно проект выглядит как-то так:
Так вот, вся графика, шрифты, звуки и т.д. собраны в common-resources. Там же все css файлы. И все это добро компилируется в swc. Причем нужно скомпилировать так, чтобы все файлы ресурсов вошли в состав swc файла.
В форке Develar с этим проблем не было, ибо включить все файлы в swc было поведением по умолчанию и не требовало никаких настроек. В стандартном flexmojos не так, по умолчанию ничего не включается.
В документации упоминаются всякие includeFiles, includes и т.д., но все это нифига не работает. К счастью, работает опция includeStylesheets:
<includeStylesheets>
<stylesheet>
<name>Fonts.css</name>
<path>${basedir}/src/main/flex/Fonts.css</path>
</stylesheet>
<stylesheet>
<name>Main.css</name>
<path>${basedir}/src/main/flex/Main.css</path>
</stylesheet>
</includeStylesheets>
Она позволяет включить в swc файл Main.css и Fonts.css, а вместе с ними шрифты и графику, на которые они ссылаются. Уже хорошо. Но и тут ложка дегдя -- с CSS опять нелады.
Я бы хотел положить css файлы в папку css, а не в корень src. Но если так сделать, то получим ошибку компиляции:
Error: A file found in a source-path must have the same package structure 'css', as the definition's package, ''.
Типа, класс должен быть в пакете css, а не в дефолтном пакете. Так что приходится класть css в корень src.
В итоге проект собирается и работает как надо.
Со всем этим можно было бы мириться, если бы не проблема с интеграцией с IDEA. В flex-config.xml не указан главный класс модуля. Из-за этого не работает build, а run/debug работает только при указании Main Class. Запускать флэшку для отладки через html-обертку или через url нельзя.
В итоге я вернулся на форк Develar, который с некоторых пор тоже работает на maven 3. Но об этом в следующий раз.
Ну а для тех, кто юзает стандартный Flexmojos два линка:
Btw, мои проекты на github остались на стандартном flexmojos. Оттуда тоже можно брать примеры помов.
Btw, Владимир Кривошеев aka Develar нынче работает в JetBrains, так что мы ждем еще лучшей поддержки flexmojos (в том числе и стандартного) и Flex в IDEA.
Btw, проголосуйте за поддержку Mate фреймворка в IDEA :) Ну если, конечно, вы хотите, чтобы такая поддержка там была.
Comments
develar (not verified)
Sun, 01/09/2011 - 18:54
Permalink
Генерация flex-config для
Генерация flex-config для стандартного flexmojos также поддерживается http://youtrack.jetbrains.net/issue/IDEA-61024 (хотя из коробки вы ничего не получите на данный момент).
Касательно warnings.noConstructor — синтаксис сейчас изменен на нечто типа
inozemcev (not verified)
Fri, 05/06/2011 - 14:22
Permalink
пользовательские константы в flex-config
Такой вопрос, здесь мы обсуждали возможность создания пользовательских констант в config-xml. Каким образом я могу внести аналогичные изменения в flex-config в том случае, когда я использую maven ?
Я пробовал создавать через тег но похоже где то сделал ошибку.
yzh44yzh
Mon, 05/09/2011 - 15:54
Permalink
definesDeclaration
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>${flexmojos.version}</version>
<extensions>true</extensions>
<configuration>
<definesDeclaration>
<property>
<name>COMPILER::BUILD_NUMBER</name>
<value>"${svn.build}"</value>
</property>
<property>
<name>COMPILER::RTMP_URI</name>
<value>"${chat7.fms.uri}"</value>
</property>
Yuriy Yarovoy (not verified)
Sat, 12/17/2011 - 18:10
Permalink
Ресурсы
Юра, а ты так и не решил для себя вопрос с разделением ресурсов по отдельным папкам?
yzh44yzh
Sun, 12/18/2011 - 21:48
Permalink
решил, после того, как
решил, после того, как отказался от maven, и сделал все на ant )
Add new comment