Если вы уже знаете, что такое Maven и хотите собрать простое модульное веб приложение (если нет- можно прочитать топик о нем и основы). Тема данного топика- как сконфигурировать pom.xml, добавить отдельный модуль к проекту, подключить плагины, развернуть приложение на сервере Apache Tomcat.
Итак, возьмем для примера простое веб приложение. Оно состоит из модулей: model (Entity и Dao классы), service (сервисы), web (сервлеты). У проекта и каждого модуля есть свой файл pom.xml. В качестве IDE будет служить eclipse, но также все справедливо и для NetBeans, IDEA. Предполагается, что в уже IDE добавлен maven plugin, сервер Tomcat.
Наши шаги:
В нашей IDE создаем Maven Project, сама IDE попросит задать пункты:
выбираем skip archetype selection, Group Id = com.mycompany, Artifact Id = myproject.
Подключаем модули:
По-дефолту maven подключит JRE версии 1.4, нам нужна 1.6, подключаем плагин:
У модуля могут быть зависимости от других библиотек, хорошая практика указывать версию зависимости не в pom.xml модуля, а проекта, в dependencyManagment:
В IDE правой кнопкой по проекту- создаем Maven Module. В pom.xml этого модуля указываем проект:
В зависимостях также можно указывать наши модули (в данном случае service). Повторюсь, если в pom.xml проекта указали версию библиотеки, в pom.xml модуля версию можно (и лучше)не указывать:
Также нам нужен плагин, чтобы приложение по команде в IDE
Плагин Maven`а должен знать, логин: пароль Tomcat для подключения к Tomcat manager. Открываем(если нет, создаем) файл в домашней директории /.m2/settings.xml, после этого в настойках
В директории Tomcat сonf/tomcat-users.xml добавляем права на тот самый manager:
Стоит отметить, что IDE может запускать Tomcat с настройками из workspace, либо из директории Tomcat. Мы выбрали второй вариант, поэтому в самой IDE ставим параметры сервера-
Запускаем из IDE наш сервер Tomcat. Назначаем жизненный цикл Maven для модуля:
Полезные ссылки:
maven.apache.org/guides
tomcat-maven-plugin
Intro
Итак, возьмем для примера простое веб приложение. Оно состоит из модулей: model (Entity и Dao классы), service (сервисы), web (сервлеты). У проекта и каждого модуля есть свой файл pom.xml. В качестве IDE будет служить eclipse, но также все справедливо и для NetBeans, IDEA. Предполагается, что в уже IDE добавлен maven plugin, сервер Tomcat.
Наши шаги:
- создаем Maven проект
- создаем Maven модуль
- настраиваем maven, tomcat
- delpoy на сервер
Создание Maven проекта
В нашей IDE создаем Maven Project, сама IDE попросит задать пункты:
выбираем skip archetype selection, Group Id = com.mycompany, Artifact Id = myproject.
Подключаем модули:
<groupId>com.mycompany</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <modules> <module>model</module> <module>service</module> <module>web-servlet</module> </modules>
По-дефолту maven подключит JRE версии 1.4, нам нужна 1.6, подключаем плагин:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
У модуля могут быть зависимости от других библиотек, хорошая практика указывать версию зависимости не в pom.xml модуля, а проекта, в dependencyManagment:
<dependencyManagement> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1-b01</version> </dependency> </dependencies> </dependencyManagement>
Создание Maven модуля
В IDE правой кнопкой по проекту- создаем Maven Module. В pom.xml этого модуля указываем проект:
<packaging>war</packaging> <parent> <groupId>com.mycompany</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>
В зависимостях также можно указывать наши модули (в данном случае service). Повторюсь, если в pom.xml проекта указали версию библиотеки, в pom.xml модуля версию можно (и лучше)не указывать:
<dependencies> <dependency> <groupId>com.mycompany</groupId> <artifactId>service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency>
Также нам нужен плагин, чтобы приложение по команде в IDE
Maven-> build развертывалось на сервере. Замечу, что для Tomcat 6 и 7 строки url будут различны:<build> <finalName>project</finalName> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <url>http://localhost:8080/manager/html</url><!-- для Tomcat 7 !--> <!--<url>http://localhost:8080/manager</url>!--><!-- для Tomcat 6 !--> <server>tomcatServer</server> <path>/project</path> </configuration> </plugin> </plugins> </build>
Конфигурирование Maven, Tomcat
Плагин Maven`а должен знать, логин: пароль Tomcat для подключения к Tomcat manager. Открываем(если нет, создаем) файл в домашней директории /.m2/settings.xml, после этого в настойках
IDE-> Maven-> User Settings-> Update Settings. Собственно settings.xml:<settings> <servers> <server> <id>tomcatServer</id> <username>admin</username> <password>password</password> </server> </servers> </settings>
В директории Tomcat сonf/tomcat-users.xml добавляем права на тот самый manager:
<tomcat-users> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <user username="admin" password="password" roles="admin,manager,manager-gui"/> </tomcat-users>
Стоит отметить, что IDE может запускать Tomcat с настройками из workspace, либо из директории Tomcat. Мы выбрали второй вариант, поэтому в самой IDE ставим параметры сервера-
Server Location-> Use Tomcat installation.Deploy на сервер
Запускаем из IDE наш сервер Tomcat. Назначаем жизненный цикл Maven для модуля:
модуль-> Run As-> Maven build. В строчку Goals добавляем tomcat:redeploy, запускаем. Итак, модуль задеплоился на localhost:8080/project/. Все пляшут и поют. В Eclipse, весьма удобно делается очередной деплой по Shift+Atl+X, M.Полезные ссылки:
maven.apache.org/guides
tomcat-maven-plugin
