Ну продолжим :)
Это, конечно, клево, что у нас все так круто и повсюду артефакты. И теперь для нас поднять проект -- плевое дело. Но вот нюанс -- не всякая swc -- артефакт. Постоянно возникает необходимость подключить, например, Mate-фреймворк, какой-нибудь Papervision или еще что-нибудь в этом роде.
А то еще бывает, что и fla файлы водятся в проекте. И там какая-нибудь анимация или ресурсы. И оно компилится в swc, которое хотелось бы подключить.
На сей счет есть три способа, два из которых я пробовал, а об одном слыхал.
Для начала простой способ "в лоб" -- сгенерить из swc артефакт, положить в репозиторий, чтобы можно было прописывать зависимости от него. Делается это из консоли следующим образом:
mvn install:install-file \ -Dfile=Mate_08_9.swc \ -DgroupId=com.asfusion.mate \ -DartifactId=mate \ -Dversion=08_9 \ -Dpackaging=swc \ -DgeneratePom=true
Все бы хорошо, но есть одно неудобство -- это нужно повторить каждому разработчику на своей машине. И это слегка усложняет такой красивый и простой способ подымания проекта с нуля.
Другой способ -- использовать Nexus и создавать артефакты в его репозитории, а не на локальной машине. Это делается один раз, после чего артефакты сразу доступны всем разработчиком. Но про Nexus позже будет отдельный разговор.
Наконец, третий способ -- использовать attach-artifact-maven-plugin. Его рекомендует Develar, и про него можно прочитать тут. Develar, как обычно, лаконичен, и вам предлагается втыкать в сорцы без особых объяснений.
Между тем, объяснения были бы не лишними. Ибо из сорцов видно, что подключаются pom файлы. А откуда они возьмутся, если у нас изначально swc? Но вы уж меня простите, я не стал разбираться с attach-artifact-maven-plugin, ибо вариант с Nexus меня вполне устроил. Попробуйте сами :)
Некоторые успели заметить, что в стандартном flexmojos не работают транзитивные зависимости. Но, наверное, не все знают, что это такое.
Это очень просто. Допустим у вас есть три модуля: A, B, C . Модуль A зависит от B, модуль B зависит от C . Это прямые зависимости. А вот зависимость А от С -- транзитивная. Конечно, транзитивные зависимости могут быть какой угодно глубокой вложенности.
Maven прекрасно справляется с транизитивными зависимостями. Поэтому в pom-файле модуля A вы указываете зависимость от B, и вовсе не волнуетесь, что еще там тянется вместе с B. Да, так оно в Maven, но не так оно в стандартном Flexmojos. И тут приходится в pom-файле модуля A прописывать все зависимости, в том числе и транзитивные, любой вложенности.
Очевидно, что это не тру. Одной этой причины достаточно, чтобы использовать форк Develar, где данная проблема решена. Но у Develar имеются и другие фичи.
Если вы обратите внимание на размер swc файла, скомпилированного стандартным flexmojos, то заметите, что он велик. Ага, подумаете вы, там просто вкомпилены классы из других модулей и весь флекс-фреймворк. Всего-то нужно поставить
В форке Develar
Другие фишки для меня менее важны, ибо связаны с resource bundles (которые мы используем весьма специфично) и с flex sdk 4 (с которым мы еще не работаем). Так что читайте автора в оригинале :)
Во-первых, в ~/.m2/settings.xml вместо стандартного репозитория http://repository.sonatype.org/content/groups/flexgroup/ нужно добавить http://repository.flyti.org/ Вероятно это лучше делать в отдельном профиле, как-нибудь так:
<settings>
<profiles>
<profile>
<id>flex-mojos</id>
<repositories>
<repository>
<id>flex-mojos-repository</id>
<url>http://repository.sonatype.org/content/groups/flexgroup/</url>
<releases> <enabled>true</enabled> </releases>
<snapshots> <enabled>false</enabled> </snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>http://repository.sonatype.org/content/groups/flexgroup/</url>
<releases> <enabled>true</enabled> </releases>
<snapshots> <enabled>false</enabled> </snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>flex-mojos-develar-fork</id>
<repositories>
<repository>
<id>flex-mojos-repository</id>
<url>http://repository.flyti.org/</url>
<releases> <enabled>true</enabled> </releases>
<snapshots> <enabled>false</enabled> </snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>http://repository.flyti.org/</url>
<releases> <enabled>true</enabled> </releases>
<snapshots> <enabled>false</enabled> </snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>flex-mojos-develar-fork</activeProfile>
</activeProfiles>
</settings>
Во-вторых, нужно указывать другую версию flexmojos-maven-plugin в ваших pom-файлах. Вместо версии 3.5.0 пишем 3.5-de3. Будет выглядеть так:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.5-de3</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
</build>
Вот и все, теперь можно повыкидывать из pom лишние зависимости, которые вам пришлось туда напихать.
Comments
Anonymous (not verified)
Sun, 01/09/2011 - 18:48
Permalink
Скажите пожалуйста, актуально
Скажите пожалуйста, актуально ли разбираться еще с форком develara или с четвертой версии flexmojos в этом уже нет необходимости ? И если да то какую версию форка пользовать с мавеном третьим ?
yzh44yzh
Sun, 01/09/2011 - 18:48
Permalink
Сейчас разницы между ними
Сейчас разницы между ними стало меньше, но у форка остаются свои фишки.
Я, однако, перешел на стандартную ветку.
inozemcev (not verified)
Tue, 03/22/2011 - 20:02
Permalink
resources
Не подскажете каким образом теперь нужно встраивать ресурсы на этапе компиляции по относительным ссылкам. Во FD была возможность клинуть правой кнопкой мыши и выбрать:'Insert into document', есть ли что-то аналогичное в Idea ?!
Add new comment