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"></role> <user username="user" password="123456" roles="manager"></user> </tomcat> |
Таким образом, 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> |
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).