# MAVEN : автоматизация сборки приложений # Назначение и область применения # Основные принципы # Термины и определения >архетип (archetype) - шаблон или макет структуры приложения >зависимость (dependency) - внешняя библиотека, подключаемая к проекту >плагин (plugin) - # Типы формируемых maven пакетов (packages) / package goals ## jar (Java archive) goal : jar **Фазы проекта jar**: - resources: resources - compiler: compile - resources: testResources - compiler: testCompile - surefire: test - jar: jar - install: install - deploy: deploy jar, war ejb, par, rar - имеют схожие жизненные циклы проектов, различается только их цель (goal) ```xml jar ``` ## war (web application archive) goal : war war-архив может включать: - Java servlets - JSPs - HTML pages - a deployment descriptor - and related resources ```xml war ``` ## ear (Enterprise application archive) Архив, содержащий сжатый многомодульный проект Java EE, включает один или несколько модулей war, ejb. ear архив для развертывания требует наличия сервера приложений. # Жизненный цикл maven проекта Фазы (phase) жизненного цкла проекта maven: 1. clean — удаляются все скомпилированные файлы из каталога target (место, в котором сохраняются готовые артефакты); 2. validate — идет проверка, вся ли информация доступна для сборки проекта; 3. compile — компилируются файлы с исходным кодом; 4. test — запускаются тесты; 5. package — упаковываются скомпилированные файлы (в jar, war и т.д. архив); 6. verify — выполняются проверки для подтверждения готовности упакованного файла; 7. install — пакет помещается в локальный репозиторий. Теперь он может использоваться другими проектами как внешняя библиотека; 8. site — создается документация проекта; 9. deploy — собранный архив копируется в удаленный репозиторий. Также у каждой фазы есть пре- и пост-фазы: например, pre-deploy, post-deploy, pre-clean, post-clean, но используются они довольно редко. # Создание приложения из архетипа основные мавен архетипы: http://maven.apache.org/guides/introduction/introduction-to-archetypes.html # Создание собственного архетипа # Управление зависимостями Зависимости могут браться: - из центрального (глобального) хранилища maven https://mvnrepository.com/ - из стороннего хранилища - из локального хранилища (создается на пользовательской мшине, при установке maven) ```xml [наименование пакета] [наименование библиотеки] [версия] ``` # Собственный репозиторий http://nexus.sonatype.org/ https://jfrog.com/ https://archiva.apache.org/