...

понедельник, 29 июля 2013 г.

[Из песочницы] ExtJs как maven зависимость


сегодня в 14:03



Зачем




Есть у меня несколько проектов на Java использующих в виде web-клиента ExtJs приложения. Библиотека прямо скажем не маленькая. Полный архив более 60M мегабайт весит, и приложениям находящимся в активной разработке приходится все это тащить и скачивать из CVS. А если к последнему добавить медленный интернет, то все становится совсем грустно. В приложение еще и десятка классов нет, а вес уже за полсотни.



Что




Появилась идея оформить эту библиотеку в виде подключаемого модуля. После определенной доли RTFM`а было решено сделать это через мавен.

Есть у него такая вещь, как war-layout. Позволяет «склеивать» несколько приложений в одно, причем можно четко указать что включать, а что нет.

Как






  1. Создание overlay-проекта



    Тут все просто.


    1. Создаем пустое web-приложение.

    2. В папку

      src/main/webapp/lib/extJs/


      (Пути относительно корня проекта. Могут зависеть от вашей конфигурации и вашего желания быть ССЗБ)

      распаковываем архив с ExtJs, скаченный с сайта сенчи.

      Внимание! На момент написания поста архив содержал папку ext-НОМЕР_ВЕРСИИ_ExtJs. Данная папка нам не нужна. Распаковывать надо именно её содержимое. Это позволит нам для любой версии extJs иметь одинаковые пути. Управлять же версией мы будем в другом месте.

    3. В pom.xml в настройках проекта не забываем прописать

      <version>НОМЕР_ВЕРСИИ_ExtJs-RELEASE</version>


      и

      <packaging>war</packaging>




      Теперь нам достаточно выполнить

      mvn clean install


      для загрузки в локальный мавен репозиторий, или как у нас — настроить Jenkins на мониторинг CSV-репозитория и автоматическую загрузку новых версий в nexus.





  2. Подключение к другому проекту



    В pom.xml надо указать зависимость от выше созданного проекта

    <!--Overlays-->
    <dependency>
    <groupId>org.me</groupId>
    <artifactId>extjs-overlay</artifactId>
    <type>war</type>
    <version>4.2-RELEASE</version>
    <scope>runtime</scope>
    </dependency>




    и настроить плагин

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
    <overlays>
    <overlay>
    <groupId>org.me</groupId>
    <artifactId>extjs-overlay</artifactId>
    </overlay>
    </overlays>
    </configuration>
    </plugin>




    Там же можно указать какие файлы не включать в сборку.

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
    <overlays>
    <overlay>
    <groupId>org.me</groupId>
    <artifactId>extjs-overlay</artifactId>
    <excludes>
    <exclude>lib/extjs/*</exclude>
    </excludes>
    </overlay>
    </overlays>
    </configuration>
    </plugin>







Итог




Мы получили возможность обновлять версию ExtJs простым изменением версии зависимости в pom.xml. На другой чаше весов не слишком быстрая обработка мавеном оверлеев, но это решается путем выкидывания всего не нужного. Более того если мы решим перегрузить какие-то базовые функции ExtJs нам не надо будет копировать код во все проекты.

Документация maven war plugin





Developers, stick with Russians – work in London




Переводы с

карты на карту


Переводы

через QR-Код


Новая функция

«Мой контроль»



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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


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

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