|
|
|
# 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
|
|
|
|
<!-- метод упаковки -->
|
|
|
|
<packaging>jar</packaging>
|
|
|
|
```
|
|
|
|
## war (web application archive)
|
|
|
|
goal : war
|
|
|
|
|
|
|
|
war-архив может включать:
|
|
|
|
- Java servlets
|
|
|
|
- JSPs
|
|
|
|
- HTML pages
|
|
|
|
- a deployment descriptor
|
|
|
|
- and related resources
|
|
|
|
|
|
|
|
```xml
|
|
|
|
<!-- метод упаковки -->
|
|
|
|
<packaging>war</packaging>
|
|
|
|
```
|
|
|
|
## 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
|
|
|
|
<!-- Объявление зависимостей -->
|
|
|
|
<dependency>
|
|
|
|
<groupId>[наименование пакета]</groupId>
|
|
|
|
<artifactId>[наименование библиотеки]</artifactId>
|
|
|
|
<version>[версия]</version>
|
|
|
|
</dependency>
|
|
|
|
```
|
|
|
|
# Собственный репозиторий
|
|
|
|
http://nexus.sonatype.org/
|
|
|
|
https://jfrog.com/
|
|
|
|
https://archiva.apache.org/
|
|
|
|
|