Настройка файла pom.xml в Maven

Давайте заглянем внутрь pom файла и разберемся с настройкой метаданных проекта в нем.

4.0.0 com.MavenWebAps firstMavenWebAp 0.0.1-SNAPSHOT jar firstMavenWebAp Maven Webapp http://maven.apache.org UTF-8 1.8 1.8 junit junit 3.8.1 test

Включение зависимостей в проект.

Давайте же теперь разберемся с самым главным – как включать зависимости в наш проект.

4.0.0 com.MavenWebAp firstMavenWebAp 0.0.1-SNAPSHOT jar firstMavenWebAp Maven Webapp http://maven.apache.org UTF-8 1.8 1.8 junit junit 3.8.1 test org.springframework spring-webmvc 5.0.2.RELEASE javax.servlet javax.servlet-api 4.0.0 javax.servlet.jsp javax.servlet.jsp-api 2.3.3 javax.servlet jstl 1.2

Использование плагинов.

Давайте теперь разберемся, что такое плагины и как добавлять их в наш проект.

4.0.0 com.MavenWebAp firstMavenWebAp 0.0.1-SNAPSHOT jar firstMavenWebAp Maven Webapp http://maven.apache.org UTF-8 1.8 1.8 junit junit 3.8.1 test org.springframework spring-webmvc 5.0.2.RELEASE javax.servlet javax.servlet-api 4.0.0 javax.servlet.jsp javax.servlet.jsp-api 2.3.3 javax.servlet jstl 1.2 firstMavenWebProject org.apache.maven.plugins maven-war-plugin 3.4.0 resourcedir

Сторонние репозитории

Кроме основного мавен репозитория из которого происходит загрузка зависимостей также есть и другие репозитории, и чтобы скачивание происходило и оттуда его нужно указать  в pom.xml.

4.0.0 com.MavenWebApS firstMavenWebAp 0.0.1-SNAPSHOT jar firstMavenWebAp Maven Webapp http://maven.apache.org UTF-8 1.8 1.8 junit junit 3.8.1 test org.springframework spring-webmvc 5.0.2.RELEASE javax.servlet javax.servlet-api 4.0.0 javax.servlet.jsp javax.servlet.jsp-api 2.3.3 javax.servlet jstl 1.2 org.xwiki.platform xwiki-platform-oldcore 15.7-rc-1 org.xwiki.platform xwiki-platform-oldcore https://maven.xwiki.org/releases/ firstMavenWebAp org.apache.maven.plugins maven-war-plugin 3.4.0 resourcedir

Коррективы в проекте

Давайте удалим файл web.xml, чтобы теперь настраивать приложение в Java классе MySpringMvcDispServlInit вместо web.xml. Также добавим Java класс для настройки бинов вместо applicationContext.xml.

Также создадим сконфигурированную нами ранее дополнительную папку ресурсов resourcedir.

Заметьте, что директории в папке java названы как groupid и artifactid в pom файле, а после папки с названием artifactid (в нашем случае firstMavenWebApp), уже специфические папки с исходниками – config, controller и т.д. Так желательно называть, как говорилось ранее.

Также, как видим, создана страница somePage, к которой будет происходить переход через SimpleController.java.


Применение изменений в pom файле

Чтобы изменения в pom файле вступили в силу в нашем проекте, то есть скачались и добавились в наш проект все зависимости, плагины и применились другие настройки сборки, нужно нажать:

Начнется скачивание зависимостей из интернета. После этого они добавятся в наш проект и мы сможем ими смело пользоваться при программировании.


Настройка DispatcherServlet

Давайте настроим Java версию web.xml. Настроим DispatcherServlet подобным образом, как мы это делали в web.xml:

package com.mavenwebapps.firstMavenWebAp.config; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; //Этот класс вместо web.xml. Здесь конфигурируем //DispatcherServlet как мы это делали в web.xml //только Java кодом. public class MySpringMvcDispServlInit extends AbstractAnnotationConfigDispatcherServletInitializer { //Для этого переопределяем методы класса с названием //AbstractAnnotationConfigDispatcherServletInitializer. //Пишем вот такой метод) @Override protected Class[] getRootConfigClasses() { return null; } @Override protected Class[] getServletConfigClasses() { //Помним что в web.xml мы указывали параметром //сервлету имя файла конфигурации бинов. //Здесь тоже передаем имя этого файла //только в данном случае как показано ниже. return new Class[] { JavaSpringConfig.class }; } @Override protected String[] getServletMappings() { //И также как и в web.xml задаем путь по которому //происходит переход к DispatcherServlet. //”/” значит по корневому пути, то есть по пути //http://localhost:8080/firstMavenWebProject/ return new String[] { “/” }; } }

Настройка applicationContext

Давайте теперь в файлике для настройки спринг, как мы уже делали это раньше, настроим путь к директории, в которой будут искаться классы с аннотациями по которым будут создаваться бины, то есть путь com.MavenWebAps.firstMavenWebAp.

Здесь же настроим путь к папке с View. Это мы уже тоже делали раньше.

package com.MavenWebAps.firstMavenWebAp.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; //Это класс конфигурации спринг бинов //вместо applicationContext.xml. @Configuration @EnableWebMvc @ComponentScan(basePackages =”com.MavenWebAps.firstMavenWebAp”) public class JavaSpringConfig { //Здесь также как мы делали в xml создаем бин, //который определяет путь к вьюхам. @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix(“/WEB-INF/jsp/”); viewResolver.setSuffix(“.jsp”); return viewResolver; } } //То есть в нашем проекте не осталось xml ВООБЩЕ.

Настройка контроллера

Создадим контроллер, в котором определим, что по корневому пути, то есть по http://localhost:8080/firstMavenWebAp/, будет происходить переход к somePage.jsp

package com.MavenWebApps.firstMavenWebApp.controller; import org.springframework.stereotype.Controller; @Controller public class SimpleController { @GetMapping(“/”) public String goSomePage() { return “somePage”; } }

Проверка работы приложения

После этого запускаем приложение стандартным образом и видим содержимое somePage.jsp:

Создание Maven веб-проекта в Eclipse IDE

Давайте же создадим первый мавен веб-проект.

Во первых, Eclipse должен находиться в режиме создания веб-проекта. Переходим по пути:

Window > Perspective > Open Perspective > Other. Выбираем Java EE.

Далее создаем Мавен проект. Для этого переходим по пути:

File > new > Maven Project

В открывшемся окне нажимаем Next.

Далее необходимо найти и выбрать archetype нашего проекта, то есть его тип. В нашем случае нам нужен самый простой maven веб-проект. Он называется maven-archetype-webapp.

Ищем его:

Теперь нужно указать GroupId — это, условно говоря, имя нашей компании или организации — и ArtifactId, то есть имя самого проекта. Подробно о том, что это такое и зачем нужно, поговорим чуть позже.

После нажатия Finish начнется создание проекта.

Maven будет подгружать из интернета всё необходимое по ходу создания проекта.

Ниже можно увидеть созданный проект:

Search Icon

Сразу после создания проекта в нем может не присутствовать папка java. В таком случае ее можно создать вручную.

Сборщик проектов Maven

До этого момента мы все jar файлы наших проектов скачивали и добавляли вручную в папку lib проекта.

Чтобы не делать это вручную существует Mavenсредство для управления сборкой проекта и добавления зависимостей.

Зависимостьэто какой-либо jar от которого зависит наш проект. Мы делаем запрос на добавление какого-либо jar файла в проект и он добавляется автоматически средствами Maven.

Example

Добавления jar файлов происходит следующим образом:

  1. Пишем в конфигурационном файле какие jar файлы нужны нам в проекте
  2. Maven проверяет не скачивались ли эти jar ранее, и если скачивались, то извлекает их из локального репозитория и добавляет их в проект
  3. Если они не скачивались то Maven автоматически скачивает их из интернета в локальный репозиторий и добавляет их в проект.

В windows все скачанные jar файлы сохраняются в локальном репозитории по пути С:\Users\<user-homedir-name>\.m2\repository


Структура Maven веб-проекта

Мавен определяет стандартную структуру веб проекта:

  • В папке java храним все наши классы исходники.
  • В папке webapp все веб ресурсы (папка WEB-INF, картинки и т.д.).
  • В папке resources различные конф файлы.
  • В папке target мавен будет сохранять результаты сборки и другое.
  • Также может быть папка test с юнит тестами.

Конф. файл pom.xml, в котором пишутся зависимости, которые maven должен скачать всегда в корне этой структуры.


pom файл. Maven проект

Огромное преимущество Мавен в том, что созданный Мавен проект в одной IDE можно с легкостью открыть в другой.

То есть Мавен проект не зависит от IDE.

Example

pom файл состоит из 3-х частей:

  • project meta data – какие либо данные о проекте(имя, версия…),
  • список зависимостей для скачивания,
  • и плагины – добавление каких-то доп. задач для запуска.

Структура Maven-проекта может отличаться, так как у разных проектов бывают разные цели — это может быть веб-приложение, консольная программа или что-то другое. Соответственно, и структура файлов и папок будет разной.

Здесь на помощь приходит Maven archetype это шаблон (тип) Maven-проекта. При создании нового проекта можно выбрать нужный archetype, и Maven автоматически сгенерирует базовую структуру: необходимые директории и стартовые файлы, соответствующие выбранному типу проекта.

Таких архитипов на самом деле много и нужный можно найти при cоздании приложения в IDE

(во всех Ide как правило встроен Мавен).