Полной автоматизацией процесса сборки приложения уже никого не удивишь. Не в последнюю очередь благодаря Maven – системе управления жизненным циклом проекта. Однако проекты растут очень быстро: увеличивается количество модулей, тестов, зависимостей, используемых плагинов. И всего лишь за год легковесный проект, на сборку которого уходило 5 минут, превращается в монстра, который пожирает время разработчиков 30-минутной сборкой. Чтобы справится с этой проблемой разработчикам приходится постоянно чистить свой код и бороться со скоростью выполнения тестов. Это верное решение, но не следует забывать о том, что и сам процесс сборки можно улучшить. В этом докладе будет рассмотрено, как при помощи простых и нехитрых шагов можно оптимизировать работу с зависимостями и обогатить скрипты сборки полезными плагинами. Также будут обсуждаться тонкости конфигурации основных плагинов и особенности работы с командной строкой, которые появились в последней версии Maven.
16. Project Object Model Зависимости проекта Информация о модулях Плагины и порядок их выполнения Система управления версиями Управление поставкой Информация про разработчиков, лиценизи, систему отслеживания ошибок
18. Nexus как прокси-сервер От создателей Maven и менеджеров центрального репозитория Возможность загрузки 3rd-party библиотек при помощи веб-интерфейса Поддержка LDAP Планировщик задач Расширенный поиск по библиотекам и именам классов
19.
20. Конфигурация и использование Увеличьте максимальный объём используемой памяти По возможности используйте Linux-сервер Под Windows используйте специальную конфигурацию Обязательно чистите snapshot-версии А потом не забывайте очистить корзину используя scheduler Делайте дефрагментацию диска binswonfrapper.conf confxamplesetty-faster-windows.xml
22. Работа с артефактами Разные типы: jar, war, zip, swf Один модуль –артефактодного типа Координаты артефакта <dependency><groupId>com.app</groupId> <artifactId>myapp</artifactId> <version>1.2.1</version> <classifier>linux</classifier></dependency> Любая библиотека Результат сборки Артефакт
34. Default goal <project> <build> <defaultGoal>install</defaultGoal> </build> </project> Возможно прописать только один goal или phase
35. maven-enforcer-plugin Проверка определённой версииОС,Java и Maven Проверка наличия или отсутствия определённых файлов Возможно запрета использования определённых версий библиотек Возможно написания своих правил и выполнения скриптов
39. <plugin> <artifactId>maven-ant-plugin</artifactId> <executions> <execution> <id>execution1</id> ... <goals> <goal>run</goal> </goals> </execution> <execution> <id>execution2</id> ... <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> Порядок выполнения зависит от порядка появления в POM-е, при условии что прописаны id
40. maven-dependency-plugin Скачать все зависимости mvn dependency:go-offline Древовидная структура списка зависимостей mvn dependency:tree Определение неиспользуемых зависимостей mvn dependency:analyze Исключение транзитных зависимостей будет исправлено в Maven 3.1 [MNG-2315] Анализируйте и исключайте ненужные зависимости
42. <*Management> враг “копипаста” <dependencyManagement> Наследование версий зависимостей <pluginManagement> Наследование версий зависимостей и их конфигураций
44. In the childpom.xml … <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> </plugin> </plugins>
45. build-helper-maven-plugin Добавить директорию с исходниками Добавить директорию с ресурсами Добавить директорию с тестами Задеплоить несколько артефактов Зарезервировать диапазон портов
51. Отладка Стек-трейс ошибки mvn <anygoal> -e Отладочная информация mvn <anygoal> -X Отладка ядра Maven или плагинов mvnDebug <anygoal> Preparing to Execute Maven in Debug Mode Listening for transport dt_socket at address: 8000 Отладка тестов mvn test -Dmaven.surefire.debug Listening for transport dt_socket at address: 5005