Apache Maven presentation from BitByte conference

406 views

Published on

Presentation by Anatoly Kondratiev from BitByte conference

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
406
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Apache Maven presentation from BitByte conference

  1. 1. www.ExigenServices.comСборка простых и сложных Java-проектовАнатолий КондратьевАпрель 2013История строителя:Maven от новичка до мастера
  2. 2. 2Предназначение Maven• Сборка проектов• Единый стиль– Жизненный цикл– Организация данных• Автоматизация– Сборки– Зависимостей
  3. 3. 3Базовая структураМагияMavenКомпьютер ИнтернетLocal reporepo- Artifact 1- Artifact 2- Etc…Central reporepo• Артефакт (Artifact)• Репозиторий (Repository)• Зависимость (Dependency)
  4. 4. 4Maven проектpom.xmlИсходный код Ресурсы Бинарные файлыРепозиторииартефактовЖизненный цикл Mavenplug-in plug-in plug-inProjectObjectModelМенеджерзависимостей
  5. 5. 5Пример приложенияMaven в действии
  6. 6. 6Содержимое проектаGWTapplicationEJB BEJB AMy Library
  7. 7. 7Maven: Наследование и АгрегацияParentpomEJB AejbEJB BejbGwtwarMy libraryjar
  8. 8. 8Maven в действии<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>
  9. 9. 9Maven в действии• Что насчет развертывания?– Необходим EAR-файл– Необходим дополнительный шаг• Разделение frontend и backend?• NB! Один pom-файл – один артефакт
  10. 10. 10Maven в действииParentpomFrontendpomGwtwarFrontendwrapperearBackendpomEJB AejbEJB BejbBackendwrapperearMy libraryjar
  11. 11. 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>
  12. 12. 12Что ещё может помочьDependency & plugin management,Profiles, Execution blocks
  13. 13. 13Dependency&Plugin management• Избавляемся от Copy-Paste• Изменяемые и наследуемые• В родителе– GroupId & ArtifactId– Version– Всё, что может быть сконфигурировано• В наследнике– GroupId & ArtifactId
  14. 14. 14Профили в Maven• Профиль – способ сконфигурировать сборку• Разные профили – разные действия– Переименование– Использование разных конфигураций• Активация– Вручную: -Pprofile1,profile2– <activeProfiles>– <activation>
  15. 15. 15Конфигурация плагинов• Уровень плагина– Исполнение из командной строки– Стандартный жизненный цикл• Уровень исполнения (настройка Mojo)– Не является частью стандартного жизненного цикла– Разная настройка Mojo для разных окружений– Несколько Mojo для одного плагина
  16. 16. 16Конфигурация MojoPlugin: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>
  17. 17. 17Спасибо за внимание!

×