← All posts tagged Flexmojos

yzh44yzh
Maven Flexmojos Есть еще вариант собрать AS3 либу в swc файл без всякого mvn, используя mxmlc напрямую. А потом сделать mvn install:install-file

Так, может, и лучше.
yzh44yzh
Maven Flexmojos продолжение #1412544

Типа положить pom1.xml и pom2.xml у которых родителями будут разные super pom, а для сборки положить shell-скрипт, который будет делать типа такого:
cp pom1.xml pom.xml
M2_HOME=/usr/local/apache-maven-2.2.1/
$M2_HOME/bin/mvn install

cp pom2.xml pom.xml
M2_HOME=/usr/local/apache-maven-3.0.3/
$M2_HOME/bin/mvn install

(да, их еще и разными версиями maven нужно собирать) :D
yzh44yzh
Flexmojos btw, эта штука
<dependency>
<artifactId>error</artifactId>
<groupId>com.flashdevs.fdm</groupId>
<version>4.0.1</version>
<type>swc</type>
<exclusions>
<exclusion>
<artifactId>flex-framework</artifactId>
<groupId>com.adobe.flex.framework</groupId>
</exclusion>
</exclusions>
</dependency>
помогает только частично. Мавеном-то оно билдится, а вот билд из IDEA не работает, настойчиво требует spark.css

То бишь, вопрос о подключении pure as3 swc артефактов равно в flex3.5 и flex4 остается открытым
yzh44yzh
Maven Flexmojos Проблема такая вылазила раньше, но я, вроде бы, не писал, как ее решать.

Допустим у вас есть некий модуль на чистом AS3, без зависмостей от флекса. Но flexmojos устроен так, что при сборке этого модуля зависимость в swc все равно пропишется. Допустим, от 4-го SDK

И вот вы хотите использовать этот модуль в проекте с 3-м SDK, и проект не собирается.

Тогда нужно, подключая зависимость от данного модуля, указать exclusions, вот так:
<dependency>
<artifactId>error</artifactId>
<groupId>com.flashdevs.fdm</groupId>
<version>4.0.1</version>
<type>swc</type>
<exclusions>
<exclusion>
<artifactId>flex-framework</artifactId>
<groupId>com.adobe.flex.framework</groupId>
</exclusion>
</exclusions>
</dependency>
и все собирается нормально
yzh44yzh
Flexmojos стандартный flexmojos упрямо подключает halo.swc к проекту. Если генерить flex-config конфигуратором org.sonatype.flexmojos:flexmojos-maven-plugin:4.0-de3:configurator, то там никаког halo не будет. И правильно, нафиг нужен.

Но вот как бы объяснить стандартному flexmojos, что halo нафиг нужен?
yzh44yzh
Flexmojos yura ~/p/myproj/flex $ cat configure.sh
#!/bin/bash
export M2_HOME=/usr/local/apache-maven-3.0.1/

/usr/local/apache-maven-3.0.1/bin/mvn -Pnexus -o org.sonatype.flexmojos:flexmojos-maven-plugin:4.0-de3:configurator
yzh44yzh
Flexmojos Перевел проект с форка @develar на стандартный flexmojos. Стоило некоторых усилий, но в итоге все получилось. Пришлось этим занятся, когда оказалось, что с форком проект не собирается под виндой — надоевшие проблемы с путями к ассетам.

Есть пару существенных моментов:
— отказался от структуры src/main/flex src/main/resources в пользу просто src, в котором и код, и ассеты. Ибо стандартный flexmojos не умеет подключать ассеты, если они не в одном каталоге с кодом
— с swc модуле сами по себе все классы не подключатся (а форке подключались все) Нужно явно указать, что подключать
<includeClasses>
<scan>
<includes>
<include>common.*</include>
<include>common.event.*</include>
<include>common.gui.*</include>
<include>common.view.*</include>
</includes>
</scan>
</includeClasses>
— С css тоже есть заморочки, их тож нужно явно задавать в поме
<includeStylesheets>
<stylesheet>
<name>main.css</name>
<path>${basedir}/src/main.css</path>
</stylesheet>
<stylesheet>
<name>fonts.css</name>
<path>${basedir}/src/fonts.css</path>
</stylesheet>
</includeStylesheets>
ну и я не могу положить css в src/css, как мне хотелось, ибо flexmojos тогда тупит. Пришлось ложить прямо в src

Как нибудь отпишусь в блоге подробно, когда будет не лень.

Ну а форк @develar можно хоронить, я думаю, ибо у него не осталось ни поддержки, ни пользователей )
yzh44yzh
Flexmojos Бобро победило зло. Но есть нюансы )

Если хотите flexmojos4 и maven3, у вас не будет нормальной интеграции с IDEA. Если хотите нормальную интеграцию с IDEA, нужно юзать форк @develar 4.0-de3. Чтобы его юзать, нужно уметь расшифровывать загадочные послания @develar в жуйк или общаться с ним лично. Или подождать, пока я переведу эти послания на человекопонятный язык и напишу у себя в блоге.
yzh44yzh
Flexmojos По сути выходит, что переходит на maven 3 еще рано. Поддержка стандартного flexmojos и maven 3 в IDEA еще недопилена, а форк @develar выдает загадочные ошибки и не собирает мои swc. Пробовал 3.8-de3 и 4.0-de1.

Есть еще какой-то flexmojos:configurator, который, по идее, должен генерировать более правильные флекс-конфиги, чем это делает стандартный flexmojos. Но документации, ясное дело, никакой нет. И как его завести я своим слабым умом не могу догадаться.

То есть, по сути, я поставлен перед фактом: либо возвращаться на maven2 и flexmojos3, либо откзаться от запуска приложения для отладки через myproject
yzh44yzh
Flexmojos Еще пару приколов, и пошлю нафиг эту стандартную ветку. Жопа какая-то, спотыкаешься на каждом шагу. Вот пока запускал билд с указанием MainClass в Run/Debug Configuration, все было ок. Как только поставил опцию запускать через урл project как оно перестало билдится. Говорит
[main (Flex)] a target file must be specified

То бишь, компилятор не знает, какой тут главный класс. И точно, гляжу в target/module-...-configs.xml, там главный класс не упоминается. Раньше была настройка <sourceFile>MyApp.mxml</sourceFile>, теперь она не работает. Втыкаю сюда: repository.sonatype.org и не вижу, каким образом можно задать главный класс.

В итоге не могу придумать, как бы запустить билд. Еще пять минут подумаю, и пошлю все нафиг и переключусь на форк @develar. Стандартная ветка не выглядит пригодной к юзанию, по крайней мере в плане интеграции с IDEA.
yzh44yzh
Flexmojos Сделал тупой некроссплатформенный хак
cd project/www/swf
ln -s ../../moduleA/target/moduleA-1.0-SNAPSHOT.swf myapp.swf
Работает. Ну и ладно.

А вообще желание юзать стандартный flexmojos все меньше и меньше.
yzh44yzh
Flexmojos хотя не, нафиг! какой вызов анта? Оно ж будет работать, только когда я мавеном компилирую. А билд из IDEA нифига не будет ложить swf куда надо.

Черт, вот беда-то :(
yzh44yzh
Flexmojos Так, задача положить swf на веб-сервер усложняется. Раньше было так:
<configuration>
<output>/var/www/html/project/myapp.swf</output>
</configuration>
Теперь это не работает.

Попробовал так:
<configuration>
<webappDirectory>/var/www/html/project</webappDirectory>
<finalName>myapp</finalName>
</configuration>
Работает, но не так, как надо. Создает папки /var/www/html/project внутри target, а за пределы target не выходит.
FAIL

Придется пихать вызов анта в пом :(
yzh44yzh
Flexmojos Вот ведь ирония — форк @develar, конечно, лучше. Но вот писать про него в блоге нет смысла — народ если и интересуется flexmojos, то только стандартным. И если я хочу писать что-то большое и серьезное про flexmojos (ну там, хорошую серию статей), то я должен писать про стандартный. А для этого я должен сам его юзать.

Такая вот ситуация.

Про форк тоже можно писать, но меньше, и в сравнении. И тогда мне нужно знать и юзать и то, и другое.
yzh44yzh
Flexmojos А еще no-constructor warning перестал отключаться, и сборка усыпана такой фигней:
MessageVO.as(7): col: 14 Warning: No constructor function was specified for class MessageVO.
мелочь, а неприятно :)