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.