Maven и Tomcat
Ни для кого не секрет, что maven-ом можно деплоить проекты в Apache Tomcat.
Правда многие разработчики все-таки используют функции, встроенные в среду разработки (в Netbeans - из коробки, в Eclipse - ставим плагин).
Это удобно и просто, но к сожалению, мне приходится часто "перескакивать" с разных IDE и поэтому в некоторых своих проектах я предпочитаю сразу настроить tomcat:deploy.
На данный момент использую "tomcat-maven-plugin".
Запуск осуществляется командой: mvn tomcat:deploy.
Для удобство можно указать в IDE, чтобы эта команда выполнялась на действие "Run" или повесить на нее какой-нибудь HotKey.
Сборку финальной версии и развертывание приложения на "боевом" сервере, я, как правило, осуществляю вручную, т.к. далеко не всегда на реальных работающих серверах из внешнего мира доступен интерфейс для переразвертывания веб-приложений.
В случае, если мы работаем в простых условиях, когда у нас имеется свой apache tomcat-ом установленный на локальном компьютере, то настройка довольно простая.
Нам нужно три файла.
tomcat-users.xml
settings.xml
pom.xml
tomcat-users.xml
Файл, как правило, находится рядом с другими файлами для настройки сервера: APACHE_TOMCAT_DIR/conf/tomcat-users.xml
В нем нужно проверить, что создана роль "manager" и существует пользователь с этой ролью.
Что-то вроде этого:
<tomcat-users>
<role rolename="manager"/>
<user username="user" password="123456" roles="manager"/>
</tomcat-users>
Таким образом, apache tomcat будет знать, что пользователю "user" можно развертывать у него war-ики.
settings.xml
Maven-овский файл с настройками. Есть глобальный файл на систему, есть под каждого пользователя.
Я меняю как правило свой, пользовательский, он находится здесь:
${user.home}/.m2/settings.xml
Если в Windows, то это будет файл "C:\Documents and Settings\имя_пользователя\.m2\settings.xml"
В нем нужно указать Maven-у с каким логином и паролем нужно обращаться на сервер, чтобы запустить приложение.
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<!--
id это просто идентификатор, используете удобное для вас название!
Я называю так, чтобы не запутаться,
т.к. у меня есть еще сервера других версий и других целей.
-->
<id>apache-tomcat-6.0.32</id>
<!-- имя пользователя, которое вы указали в tomcat-users.xml -->
<username>user</username>
<!-- ну и естественно его пароль из tomcat-users.xml -->
<password>123456</password>
</server>
</servers>
</settings>
</xml>
pom.xml
Теперь в pom.xml указываем настройки для деплойщика: project/build/plugins/plugin tomcat-maven-plugin
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<!-- id-шник из settings.xml -->
<server>apache-tomcat-6.0.32</server>
<url>http://localhost:8080/manager</url>
<path>/mywebapp</path>
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
Таким образом в pom.xml указывается только id сервера. Этот способ хорош тем, что вы не показываете в этом файле свой логин и пароль от личного tomcat-а. Это важно поскольку pom.xml часто бывает общественным файлом (т.к. хранят его в репозиториях вместе с исходниками).
Если резюмировать, то в целом все довольно просто. Нужно показать tomcat-у кому можно деплоить (tomcat-users.xml), показать maven-у к какому серверу и с каким логином и паролем стучаться (settings.xml) и настроить файл проекта, чтобы maven знал на какой конкретно сервер разворачивать (pom.xml).
Теги:
Java
tomcat
3. Инструментарий
maven