- •Введение
- •История разработки
- •Терминология
- •Maven – основные понятия
- •Для чего Maven создан?
- •Соглашение по конфигурации
- •Файл pom
- •Супер pom
- •Жизненный цикл сборки проектов
- •Жизненный цикл Clean
- •Жизненный цикл Default (Build)
- •Жизненный цикл Site
- •Профили сборки
- •Типы профилей сборки
- •Активация профиля
- •Репозитории
- •Локальные репозитории
- •Центральный репозиторий
- •Удалённый репозиторий
- •Порядок поиска зависимостей Maven
- •Плагины
- •Типы плагинов
- •Создание проекта
- •Сборка и тестирование проекта
- •Внешние зависимости
- •Документирование проекта
- •Шаблоны проектов
- •Архитип
- •Создание приложения
- •Автоматизация развёртывания
Автоматизация развёртывания
При разработке проекта процесс развёртывания состоит из следующих шагов:
Проверка всего кода проекта в системе контроля версий.
Скачивание всего исходного кода из системы контроля версий.
Сборка приложения.
Получение WAR или EAR файла проекта.
Развёртывание файла на сервере.
Обновление документации и обновление номера версии приложения.
Обычно в процессе развёртывания участвуют много человек. Одна команда проверяет код вторая выполняет сборку и т.д. Если всё выполнять вручную, какой-то из моментов может быть упущен и т.д. Здесь приходит на помощь автоматизация развёртывания с помощью коминирования:
Сборки и релиза проекта с помощью Maven;
Использование системы контроля версий (например, Git) для работы с кодом;
Использования систем управления удалёнными репозиториями (например, Nexus).
Для автоматизирования релиза продукта мы будем использовать плагин Maven Release. Файл pom.xml будет выглядеть следующим образом:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>bus-core-api</groupId> <artifactId>mavenTutorial</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <scm> <url>http://www.svn.com</url> <connection>scm:github:http://localhost:8080/svn/proselyte/tutorial/maven</connection> <developerConnection>scm:svn:${username}/${password}@localhost:8080: core_features:1102:code</developerConnection> </scm> <distributionManagement> <repository> <id>MavenTutorial</id> <name>Release repository</name> <url>http://localhost:8088/nexus/content/repositories/ MavenTutorial</url> </repository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.0-beta-8</version> <configuration> <useReleaseProfile>false</useReleaseProfile> <goals>deploy</goals> <scmCommentPrefix>[maven-tutorial-release-checkin]-< /scmCommentPrefix> </configuration> </plugin> </plugins> </build> </project> |
В этом pom.xml файле мы использовали следующие важные элементы:
Repositories Место, где выполняется сборка JAR, WAR, или EAR или другие артефакты, которые будут получены в случае успешной сборки.
Plugin Элемент maven-release-plugin сконфигурирован для автоматизации процесса развёртывания.
SCM Определяет расположение системы контроля версий, в которой Maven выполнит проверку исходного кода.
С поощью maven-release-plugin Maven выполняет следующие задачи:
mvn release:clean
Выполняет “очистку” в случае, если релиз не был успешным.
mvn release:rollback
“Откатывает изменения”, которые были сделаны в коде и конфигурациях, если крайний релиз не был успешным.
mvn release:prepare
Выполняет множество операций:
Проверяет наличие изменений, которые не были внесены в системы контроля версий;
Проверяет, что нет snapshot зависимостей;
Обновляет pom.xml файл в системе контроля версий;
Проверяет версию приложения и удаляет snapshot-ы из версии перед релизом;
Выполняет тесты;
Выполняет коммит изменённого файла pom.xml;
Отмечает код в системе контроля версий;
Изменяет (увеличивает) номер версии и “подтягивает” snapshot-ы для будущих релизов;
Выполняет коммит изменённых файлов pom.xml в системы контроля версий.
mvn release:perform
Проверяет код, используя предыдущую метку и запускает цель Maven – deploy – для развертывания артефакта, полученного в результате сборки на репозитории.
После того, как проект был успешно запущен выполняется загрузка артефакта в репозиторий.
Литература:
http://ru.wikipedia.org [1]
http://habrahabr.ru [2]
http://proselyte.net/tutorials/maven/ [3]
