- PVSM.RU - https://www.pvsm.ru -
Есть у меня несколько проектов на Java использующих в виде web-клиента ExtJs приложения. Библиотека прямо скажем не маленькая. Полный архив более 60M мегабайт весит, и приложениям находящимся в активной разработке приходится все это тащить и скачивать из CVS. А если к последнему добавить медленный интернет, то все становится совсем грустно. В приложение еще и десятка классов нет, а вес уже за полсотни.
Появилась идея оформить эту библиотеку в виде подключаемого модуля. После определенной доли RTFM`а было решено сделать это через мавен.
Есть у него такая вещь, как war-layout. Позволяет «склеивать» несколько приложений в одно, причем можно четко указать что включать, а что нет.
Тут все просто.
src/main/webapp/lib/extJs/
(Пути относительно корня проекта. Могут зависеть от вашей конфигурации и вашего желания быть ССЗБ)
распаковываем архив с ExtJs, скаченный с сайта сенчи.
Внимание! На момент написания поста архив содержал папку ext-НОМЕР_ВЕРСИИ_ExtJs. Данная папка нам не нужна. Распаковывать надо именно её содержимое. Это позволит нам для любой версии extJs иметь одинаковые пути. Управлять же версией мы будем в другом месте.
<version>НОМЕР_ВЕРСИИ_ExtJs-RELEASE</version>
и
<packaging>war</packaging>
Теперь нам достаточно выполнить
mvn clean install
для загрузки в локальный мавен репозиторий, или как у нас — настроить Jenkins на мониторинг CSV-репозитория и автоматическую загрузку новых версий в nexus.
В 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 [1]
Автор: glebiuskv
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/maven/39701
Ссылки в тексте:
[1] Документация maven war plugin: http://maven.apache.org/plugins/maven-war-plugin/overlays.html
[2] Источник: http://habrahabr.ru/post/188110/
Нажмите здесь для печати.