Используем 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-файл, даже если у вас было несколько jar-файлов.
Тег pomFile опциональный и позволяет отправить в репозиторий другой pom.xml, который не содержит скрытых или служебных данных.
Развертывание web-приложения в Tomcat с помощью Maven
Самый популярный веб-сервер для веб-приложений на Java — это Apache Tomcat. И конечно же с помощью Maven можно деплоить war-файлы прямо в локальный или даже удаленный Tomcat-сервер.
Устанавливать и настраивать Tomcat мы научимся как-нибудь потом, сейчас же коснемся только темы автоматического деплоя нашего web-приложения.
Шаг первый. Мы должны дать доступ 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 | Передеплоить приложение |
Деплой с помощью плагина 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>
Деплой с помощью IntelliJ IDEA
Intellij IDEA делает всю работу сама, нужен только установленный Tomcat.
Шаг первый. Создаем локальную конфигурацию Tomcat:
Шаг второй. Затем выбираем локальный Tomcat:
Шаг третий. Конфигурируем Tomcat:
Шаг четвертый. Добавляем путь к папке Tomcat.
Шаг пятый. Добавляем наш проект как артефакт к Tomcat.
Для этого переходим на вкладку Deployment и нажимает справа кнопку +.
Вот и все.
Кстати, если тебе нужно деплоить на удаленный сервер, просто выбери во втором шаге Remote Tomcat.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ