Apache Maven — веб приложение

в 7:06, , рубрики: java, maven, tomcat, Песочница, сборка проекта, метки: , , ,

Если вы уже знаете, что такое Maven и хотите собрать простое модульное веб приложение (если нет- можно прочитать топик о нем и основы). Тема данного топика- как сконфигурировать pom.xml, добавить отдельный модуль к проекту, подключить плагины, развернуть приложение на сервере Apache Tomcat.

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

Автор: JamesKirk

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js