1. Використовуємо maven-deploy-plugin
Ще одна цікава тема — автоматичний deploy зібраного пакета. Припустимо, ми зібрали власну бібліотеку за допомогою Maven. Як нам автоматично викласти її до локального, корпоративного чи центрального Maven-репозиторію?
Для цього у Maven є спеціальний плагін maven-deploy-plugin. Приклад:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
<configuration>
<file>${project.build.directory}\${project.artifactId}-src.zip</file>
<url>${project.distributionManagement.repository.url}</url>
<repositoryId>${project.distributionManagement.repository.id}</repositoryId>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>zip</packaging>
<pomFile>pom.xml</pomFile>
</configuration>
</plugin>
З цими налаштуваннями ти можеш викласти зібрану бібліотеку до Maven-репозиторію як валідний пакет. Докладно розбирати цей процес ми не будемо, але швиденько поглянемо, що відбувається:
Тег file вказує файл, який буде відправлено до репозиторію Maven як нову бібліотеку.
Тег url – шлях до репозиторію Maven (локальний/корпоративний/…).
Тег repositoryId вказує ідентифікатор репозиторію, до якого проводитиметься депллой.
Теги groupId, artifactId, version встановлюють стандартну ідентифікацію пакета в репозиторії Maven. Саме за цими трьома параметрами можна однозначно ідентифікувати бібліотеку.
Тег packaging використовується для того, щоб результат надсилався одним zip-файлом. Якщо його не вказати, буде один jar-файл, навіть якщо у вас було їх кілька.
Тег pomFile є опціональним і дозволяє надіслати до репозиторію інший pom.xml, який не містить прихованих або службових даних.
2. Розгортання вебпрограми в Tomcat за допомогою Maven
Найпопулярніший вебсервер для вебзастосунків на Java — це Apache Tomcat. І звісно ж, за допомогою Maven можна деплоїти war-файли прямо до локального або навіть віддаленого Tomcat-сервера.
Установлювати і налаштовувати Tomcat ми навчимося якось іншим разом. Сьогодні торкнемося лише теми автоматичного деплою нашого вебзастосунку.
Крок перший. Ми повинні дати доступ Maven'у до Tomcat-сервера. Для цього відкриваємо файл conf/tomcat-users.xml в директорії, де розпакований Apache Tomcat, і додаємо ролі manager-gui та manager-script:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script" />
</tomcat-users>
Крок другий. Дозволяємо доступ Maven до Tomcat. Для цього відкриваємо файл $MAVEN_HOME/conf/settings.xml та додаємо сервер:
<?xml version="1.0" encoding="UTF-8"?>
<settings ...>
<servers>
<server>
<id>TomcatServer</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
</settings>
Крок третій. Додаємо спеціальний плагін для автоматизованого деплою нашої програми в Apache Tomcat. Плагін називається tomcat7-maven-plugin. До речі, його створено не розробниками Maven, а розробниками Tomcat, про що можна здогадатися з імені.
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<path>/simpleProject</path>
</configuration>
</plugin>
</plugins>
</build>
У розділі configuration вказуємо:
- url - адресу, де запущено Tomcat, і шлях до manager/text
- server - ID сервера з файлу settings.xml
- path — адресу, за якою буде доступна програма, що розгортається.
Команди для керування деплоєм:
mvn tomcat7:deploy | Виконати деплой програми в Tomcat |
---|---|
mvn tomcat7:undeploy | Видалити програму з Tomcat |
mvn tomcat7:redeploy | Передати програму |
3. Деплой за допомогою плагіна Cargo Plugin
Ще один корисний та універсальний плагін для деплою вебзастосунків – Cargo Plugin. Він може працювати з різними типами вебсерверів. Ось як зробити деплой за його допомогою в Apache Tomcat:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.9.10</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<type>installed</type>
<home>Insert absolute path to tomcat 7 installation</home>
</container>
<configuration>
<type>existing</type>
<home>Insert absolute path to tomcat 7 installation</home>
</configuration>
</configuration>
</plugin>
</plugins>
</build>
Щоб встановити вебпрограму до локального Tomcat, потрібно виконати такі команди:
mvn install
mvn cargo:deploy
Якщо ми хочемо виконати деплой на віддалений вебсервер, доведеться налаштувати права доступу до цього серверу. Для цього їх потрібно прописати в pom.xml:
<configuration>
<container>
<containerId>tomcat8x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.remote.username>admin</cargo.remote.username>
<cargo.remote.password>admin</cargo.remote.password>
<cargo.tomcat.manager.url>http://localhost:8080/manager/text</cargo.tomcat.manager.url>
</properties>
</configuration>
</configuration>
4. Деплой за допомогою IntelliJ IDEA
Intellij IDEA робить всю роботу сама, потрібен лише встановлений Tomcat.
Крок перший. Створюємо локальну конфігурацію Tomcat:
Крок другий. Обираємо локальний Tomcat:
Крок третій. Конфігуруємо Tomcat:
Крок четвертий. Додаємо шлях до папки Tomcat.
Крок п'ятий. Додаємо наш проєкт як артефакт Tomcat.
Для цього переходимо на вкладку Deployment і праворуч натискаємо кнопку +.
От і все.
До речі, якщо тобі потрібно деплоїти на віддалений сервер, просто обери в другому кроці Remote Tomcat.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ