Анатолий Кондратьев, exigen services
DESCRIPTION
«История строителя: Maven - от новичка до мастера. Сборка простых и сложных Java- проектов.» BitByte: 20 апреля 2013, Санкт-Петербург http://bitbyte.itmozg.ru/TRANSCRIPT
![Page 1: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/1.jpg)
www.ExigenServices.com
Сборка простых и сложных Java-проектов
Анатолий Кондратьев
Апрель 2013
История строителя:
Maven от новичка до мастера
![Page 2: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/2.jpg)
2
Предназначение Maven
• Сборка проектов
• Единый стиль
– Жизненный цикл
– Организация данных
• Автоматизация
– Сборки
– Зависимостей
![Page 3: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/3.jpg)
3
Базовая структура
Магия Maven
Компьютер Интернет
Local repo
repo
- Artifact 1 - Artifact 2 - Etc…
Central repo
repo
• Артефакт (Artifact)
• Репозиторий (Repository)
• Зависимость (Dependency)
![Page 4: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/4.jpg)
4
Maven проект
pom.xml
Исходный код Ресурсы Бинарные файлы
Репозитории
артефактов
Жизненный цикл Maven
plug-in plug-in plug-in
Project Object Model
Менеджер зависимостей
![Page 5: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/5.jpg)
5
Пример приложения
Maven в действии
![Page 6: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/6.jpg)
6
Содержимое проекта
GWT application
EJB B EJB A
My Library
![Page 7: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/7.jpg)
7
Maven: Наследование и Агрегация
Parent pom
EJB A ejb
EJB B ejb
Gwt war
My library jar
![Page 8: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/8.jpg)
8
Maven в действии
<project …>
<modelVersion>4.0.0</modelVersion>
<groupId>ru.exigenservices</groupId>
<artifactId>my-parent</artifactId>
<version>1.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>EJB-A</module>
<module>EJB-B</module>
<module>Gwt</module>
<module>MyLibrary</module>
</modules>
</project>
![Page 9: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/9.jpg)
9
Maven в действии
• Что насчет развертывания?
– Необходим EAR-файл
– Необходим дополнительный шаг
• Разделение frontend и backend?
• NB! Один pom-файл – один артефакт
![Page 10: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/10.jpg)
10
Maven в действии
Parent
pom
Frontend
pom
Gwt
war
Frontend wrapper
ear
Backend
pom
EJB A
ejb
EJB B
ejb
Backend wrapper
ear
My library jar
![Page 11: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/11.jpg)
11
Многомодульная иерархия
• Parent pom <project …> <groupId>exigen</groupId> <artifactId>parent</artifactId> <version>1.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>backend</module> <module>frontend</module> </modules>
</project>
• Frontend pom <project …> <parent> <groupId>exigen</groupId> <artifactId>parent</artifactId> <version>1.0.1-SNAPSHOT</version> </parent>
<artifactId>frontend</artifactId> <packaging>pom</packaging> <modules> <module>Gwt</module> </modules>
</project>
![Page 12: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/12.jpg)
12
Что ещё может помочь
Dependency & plugin management, Profiles, Execution blocks
![Page 13: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/13.jpg)
13
Dependency&Plugin management
• Избавляемся от Copy-Paste
• Изменяемые и наследуемые
• В родителе – GroupId & ArtifactId
– Version
– Всё, что может быть сконфигурировано
• В наследнике – GroupId & ArtifactId
![Page 14: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/14.jpg)
14
Профили в Maven
• Профиль – способ сконфигурировать сборку
• Разные профили – разные действия
– Переименование
– Использование разных конфигураций
• Активация
– Вручную: -Pprofile1,profile2
– <activeProfiles>
– <activation>
![Page 15: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/15.jpg)
15
Конфигурация плагинов
• Уровень плагина
– Исполнение из командной строки
– Стандартный жизненный цикл
• Уровень исполнения (настройка Mojo)
– Не является частью стандартного жизненного цикла
– Разная настройка Mojo для разных окружений
– Несколько Mojo для одного плагина
![Page 16: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/16.jpg)
16
Конфигурация Mojo
Plugin:time
<plugin>
<groupId>com.mycompany.example</groupId>
<artifactId>plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>first</id>
<phase>test</phase>
<goals>
<goal>time</goal>
</goals>
<configuration> … </configuration>
</execution>
<execution>
<id>default</id>
…
<!– No phase block -->
</execution>
</executions>
</plugin>
![Page 17: Анатолий Кондратьев, Exigen Services](https://reader033.vdocuments.site/reader033/viewer/2022051014/54b636cb4a795992578b478f/html5/thumbnails/17.jpg)
17
Спасибо за внимание!