JavaRush /Курсы /JSP & Servlets /Развертывание проекта с помощью Maven

Развертывание проекта с помощью Maven

JSP & Servlets
2 уровень , 4 лекция
Открыта

Используем 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.

Комментарии (16)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ромушка Роман Уровень 32
23 декабря 2024
Копец...тут даже для запуска на локальном сервере столько ухищрений? в python на django это можно сделать одной командой...
Denis Odesskiy Уровень 47
8 августа 2025
А причем тут на Django ??😳 Ну так на SpringBoot Java это тоже все одной командой, там сервер уже зашит как и в Джанге... Однако Spring все же имеет куда больше возможностей чем Джанго...
Роман Уровень 88
25 сентября 2024
Еще одна абсолютно бесполезная для новичка лекция
Ольга Николенко Уровень 109 Expert
5 февраля 2024
Деплой с помощью плагина tomcat7-maven-plugin описанный в лекции работает (как минимум у меня) только через IJ. Если запускаете через терминал или командную строку - насколько понимаю нужно еще аргументы указывать или прописывать недостающую информацию в помнике (исправьте меня если не так).
Илья Емельянов Уровень 5 Expert
5 февраля 2024
А ты запускала перед этим tomcat ? Я тоже возился возился, но в итоге вычитал что нужно сначала запустить tomcat (в нашем случае как локальный сервер), а потом уже в консоли писать mvn tomcat7:deploy Тогда всё заводится, приложение добавляется в менеджер приложений в запущенном tomcat'e. Ну и как будто звучит это тоже логично если подумать - если сервер не запущен, то и деплоить некуда. Хотя опять же могу ошибаться
Ольга Николенко Уровень 109 Expert
6 февраля 2024
Да, конечно, сервер запускала. А ты плагин ровно как в примере писал или что-то добавлял?
Илья Емельянов Уровень 5 Expert
7 февраля 2024
Ничего своего не добавлял. Сейчас еще раз все попробовал сделать - даже с поднятым tomcat'om, пока я не зашел в manager app, deploy почему то не проходил. А после того как зашел в manager app и выполнил mvn tomcat7:deploy - приложение добавилось в manager app. А там уже и в адресной строке через localhost:8080/simpleProject можно перейти на страницу примера
Ольга Николенко Уровень 109 Expert
11 февраля 2024
так у меня тоже все добавилось, настройки тоже все задала, сервер подняла, через manager app с паролем зашла но если именно чрез консоль запускать командой mvn tomcat7:deploy ругается и просит указать аргументы, а если руками запускать - там скорее всего какие-то дефолтные значения прописаны и все деплоится как надо скорее всего это просто от версий зависит и дефолтных настроек каких-то
jvatechs Уровень 111 Expert
6 мая 2023
Устанавливать и настраивать Tomcat мы научимся как-нибудь потом, сейчас же коснемся только темы автоматического деплоя нашего web-приложения. Смысл нам читать про деплой нашего приложения ПРИ ПОМОЩИ TOMCAT, если не дана инструкция по банальной установке и настройке этого самого Tomcat?
Денис Уровень 51
5 июня 2023
Ну это было как бы в 9 уровне коллекций)
jvatechs Уровень 111 Expert
5 июня 2023
Ссылкой не поделитесь, ибо я никак про Tomcat не вспомню в коллекциях.
Денис Уровень 51
6 июня 2023
jvatechs Уровень 111 Expert
8 июня 2023
У меня вот так выходит. Скорее всего, у нас разные подписки на этот курс, вот и такая ситуация.
Anonymous #3322801 Уровень 2 Expert
13 июля 2023
можно попробовать через режим инкогнито в браузере, тогда лекция полностью откроется
Сергей Уровень 108 Expert
4 мая 2023
как-то все кусками написано и непонятен функционал этих кусков в целом. было бы более понятно и наглядно просто пару классов простых собрать этим Maven разными способами и настройками чтоб от начала до конца. Вместо всей этой кучи безсвязного текста
Денис Уровень 19
21 марта 2023
Какой спысл повторять процесс если изначально не скачали томкат??? Почему безсвязный код, в какдом уроке отдельный проект создавать или как?