Настройка файла pom.xml в Maven
Last updated: 11 мая 2025 г.Давайте заглянем внутрь pom
файла и разберемся с настройкой метаданных проекта в нем.
1<project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <!--
8 До тега properties, который можно увидеть ниже
9 в этом файле, пишется метадата нашего проекта.
10 Она есть у любого Maven проекта.
11 Это типа координаты по которым наш maven проект
12 могут найти в интернете и добавить jar файл нашего
13 проекта в виде зависимости себе в проект (если мы
14 ясное дело захотим его загрузить в интернет)
15 Эти координаты есть у всех maven проектов и все
16 нужные jar файлы будут грузиться в наш проект по ним.
17 -->
18
19 <!-- Ниже то что мы указывали при создании проекта.
20 groupId это что-то типа название всей организации,
21 которая представляет данный проект (его jar-файл).
22 Желательно иметь в папке java такую же
23 вложенную структуру папок как указано ниже, то есть
24 src/main/java/com/MavenWebAps/... -->
25 <groupId>com.MavenWebAps</groupId>
26
27 <!-- artifactId это просто название нашего проекта.
28 Также желательно чтобы являлось конечной
29 папкой структуры папок. А в этой конечной
30 папке уже исходники. То есть:
31 src/main/java/com/MavenWebAps/firstMavenWebAp/App.java
32 -->
33 <artifactId>firstMavenWebAp</artifactId>
34
35 <!-- Версия проекта (его jar файла).
36 При каждой новой сборке или изменении проекта
37 версию желательно обновлять. -->
38 <version>0.0.1-SNAPSHOT</version>
39
40 <!-- Проект можно собрать в jar файл
41 или в например war файл. Укажем jar -->
42 <packaging>jar</packaging>
43
44 <!-- Не столь важно -->
45 <name>firstMavenWebAp Maven Webapp</name>
46 <url>http://maven.apache.org</url>
47
48 <!-- здесь доп. настройки нашего проекта -->
49 <properties>
50 <!-- Можем настроить кодировку символов в проекте. -->
51 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
52
53 <!-- Можем например настроить какой версией
54 джавы будут компилироваться классы -->
55 <!-- Ниже настройка того какой версией java
56 создаются .class файлы для их использования. -->
57 <project.compiler.target>1.8</project.compiler.target>
58
59 <!-- Ниже настройка того какой
60 версией java компилируются исходники. -->
61 <project.compiler.source>1.8</project.compiler.source>
62 </properties>
63
64 <dependencies>
65 <!-- Здесь зависимости.
66 Далее подробнее о них -->
67 <dependency>
68 <groupId>junit</groupId>
69 <artifactId>junit</artifactId>
70 <version>3.8.1</version>
71 <scope>test</scope>
72 </dependency>
73 </dependencies>
74</project>
Включение зависимостей в проект.
Давайте же теперь разберемся с самым главным – как включать зависимости в наш проект.
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6 <modelVersion>4.0.0</modelVersion>
7 <groupId>com.MavenWebAp</groupId>
8 <artifactId>firstMavenWebAp</artifactId>
9 <version>0.0.1-SNAPSHOT</version>
10 <packaging>jar</packaging>
11 <name>firstMavenWebAp Maven Webapp</name>
12 <url>http://maven.apache.org</url>
13
14 <properties>
15 <project.build.sourceEncoding>
16 UTF-8
17 </project.build.sourceEncoding>
18 <project.compiler.target>
19 1.8
20 </project.compiler.target>
21 <project.compiler.source>
22 1.8
23 </project.compiler.source>
24 </properties>
25
26 <!-- В теге dependencies указываются координаты
27 зависимостей подобные тем что мы писали для нашего
28 проекта в метаданных выше. По этим координатам
29 Maven находит в интернете зависимости, скачивает их
30 и добавляет в наш проект. -->
31 <dependencies>
32 <!-- Допустим нам нужен junit
33 в нашем проекте для возможности
34 проведения юнит тестов в нашем
35 проекте. Для этого укажем его
36 координаты в теге dependency -->
37 <dependency>
38 <!-- Ниже координаты junit.
39 По ним находится в интернете, скачивается
40 и добавляется в наш проект junit-3.8.1.jar.
41 Версию указывать не обязательно (скачается
42 просто последняя) но если нужна конкретная
43 прошлая то нужно указать. Эти координаты
44 для нужной технологии можно найти на сайте
45 mvnrepository.com. -->
46 <groupId>junit</groupId>
47 <artifactId>junit</artifactId>
48 <version>3.8.1</version>
49 <scope>test</scope>
50 </dependency>
51
52 <!-- Включим в проект также
53 поддержку Spring MVC -->
54 <dependency>
55 <groupId>org.springframework</groupId>
56 <artifactId>spring-webmvc</artifactId>
57 <version>5.0.2.RELEASE</version>
58 </dependency>
59
60 <!-- Включим в проект также
61 поддержку Сервлетов, jsp и jstl. -->
62 <dependency>
63 <groupId>javax.servlet</groupId>
64 <artifactId>javax.servlet-api</artifactId>
65 <version>4.0.0</version>
66 </dependency>
67
68 <dependency>
69 <groupId>javax.servlet.jsp</groupId>
70 <artifactId>javax.servlet.jsp-api</artifactId>
71 <version>2.3.3</version>
72 </dependency>
73
74 <dependency>
75 <groupId>javax.servlet</groupId>
76 <artifactId>jstl</artifactId>
77 <version>1.2</version>
78 </dependency>
79 </dependencies>
80</project>
Использование плагинов.
Давайте теперь разберемся, что такое плагины и как добавлять их в наш проект.
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6 <modelVersion>4.0.0</modelVersion>
7 <groupId>com.MavenWebAp</groupId>
8 <artifactId>firstMavenWebAp</artifactId>
9 <version>0.0.1-SNAPSHOT</version>
10 <packaging>jar</packaging>
11 <name>firstMavenWebAp Maven Webapp</name>
12 <url>http://maven.apache.org</url>
13
14 <properties>
15 <project.build.sourceEncoding>
16 UTF-8
17 </project.build.sourceEncoding>
18 <project.compiler.target>
19 1.8
20 </project.compiler.target>
21 <project.compiler.source>
22 1.8
23 </project.compiler.source>
24 </properties>
25
26 <dependencies>
27 <dependency>
28 <groupId>junit</groupId>
29 <artifactId>junit</artifactId>
30 <version>3.8.1</version>
31 <scope>test</scope>
32 </dependency>
33
34 <dependency>
35 <groupId>org.springframework</groupId>
36 <artifactId>spring-webmvc</artifactId>
37 <version>5.0.2.RELEASE</version>
38 </dependency>
39
40 <dependency>
41 <groupId>javax.servlet</groupId>
42 <artifactId>javax.servlet-api</artifactId>
43 <version>4.0.0</version>
44 </dependency>
45
46 <dependency>
47 <groupId>javax.servlet.jsp</groupId>
48 <artifactId>javax.servlet.jsp-api</artifactId>
49 <version>2.3.3</version>
50 </dependency>
51
52 <dependency>
53 <groupId>javax.servlet</groupId>
54 <artifactId>jstl</artifactId>
55 <version>1.2</version>
56 </dependency>
57 </dependencies>
58
59 <build>
60 <finalName>firstMavenWebProject</finalName>
61 <pluginManagement>
62 <!-- В теге plugins можно добавлять ранее
63 упомянутые плагины. С их помощью можно
64 в стандартную сборку нашего проекта
65 добавлять некоторый функционал. -->
66 <plugins>
67 <!-- У плагинов тоже есть
68 координаты поэтому они также как
69 и зависимости ищутся в интернете,
70 скачиваются и применяются при сборке.
71 Плагин maven-war-plugin позволяет
72 упаковывать проект не в jar, а в war.
73 Также этот плагин открывает ряд других
74 возможностей. Например можно сделать так чтоб
75 в проекте вообще не было pom.xml
76 Тогда конф файл web.xml тоже не нужен.
77 Можно будет конфигурировать Java классом
78 вместо него. -->
79 <plugin>
80 <groupId>org.apache.maven.plugins</groupId>
81 <artifactId>maven-war-plugin</artifactId>
82 <version>3.4.0</version>
83
84 <!-- Можем также определить дополнительную
85 папку ресурсов.Должна быть в корне проекта-->
86 <configuration>
87 <webResources>
88 <resource>
89 <!-- Папку с таким именем нужно
90 создать в корне проекта.
91 И там можно хранить какие-либо
92 дополнительные ресурсы - картинки
93 и т.п. -->
94 <directory>resourcedir</directory>
95 </resource>
96 </webResources>
97 </configuration>
98 </plugin>
99 </plugins>
100 <!-- Как видим плагины это какие-то
101 дополнительные настройки нашего проекта.
102 Это не то же самое что и зависимости,
103 которые добавляют в наш проект библиотеки,
104 которые нам нужны при программировании. -->
105 </pluginManagement>
106 </build>
107</project>
Сторонние репозитории
Кроме основного мавен репозитория из которого происходит загрузка зависимостей также есть и другие репозитории, и чтобы скачивание происходило и оттуда его нужно указать в pom.xml
.
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6 <modelVersion>4.0.0</modelVersion>
7 <groupId>com.MavenWebApS</groupId>
8 <artifactId>firstMavenWebAp</artifactId>
9 <version>0.0.1-SNAPSHOT</version>
10 <packaging>jar</packaging>
11 <name>firstMavenWebAp Maven Webapp</name>
12 <url>http://maven.apache.org</url>
13
14 <properties>
15 <project.build.sourceEncoding>
16 UTF-8
17 </project.build.sourceEncoding>
18 <project.compiler.target>
19 1.8
20 </project.compiler.target>
21 <project.compiler.source>
22 1.8
23 </project.compiler.source>
24 </properties>
25
26 <dependencies>
27
28 <dependency>
29 <groupId>junit</groupId>
30 <artifactId>junit</artifactId>
31 <version>3.8.1</version>
32 <scope>test</scope>
33 </dependency>
34
35 <dependency>
36 <groupId>org.springframework</groupId>
37 <artifactId>spring-webmvc</artifactId>
38 <version>5.0.2.RELEASE</version>
39 </dependency>
40
41 <dependency>
42 <groupId>javax.servlet</groupId>
43 <artifactId>javax.servlet-api</artifactId>
44 <version>4.0.0</version>
45 </dependency>
46
47 <dependency>
48 <groupId>javax.servlet.jsp</groupId>
49 <artifactId>javax.servlet.jsp-api</artifactId>
50 <version>2.3.3</version>
51 </dependency>
52
53 <dependency>
54 <groupId>javax.servlet</groupId>
55 <artifactId>jstl</artifactId>
56 <version>1.2</version>
57 </dependency>
58
59 <!-- Смотри ниже что это
60 за новая зависимость. -->
61 <dependency>
62 <groupId>org.xwiki.platform</groupId>
63 <artifactId>xwiki-platform-oldcore</artifactId>
64 <version>15.7-rc-1</version>
65 </dependency>
66 </dependencies>
67
68 <!-- Большинство jar файлов для скачивания
69 хранятся в центральном репозитории Мавен.
70 По умолчанию Мавен ищет и скачивает оттуда.
71 Но есть много других репозиториев и если
72 не указать в конфигурации где их искать то
73 Мавен не найдет. Поэтому нужно указать
74 ссылку на него в теге <repositories>. -->
75 <repositories>
76 <repository>
77 <!-- здесь что угодно можно писать -->
78 <id>org.xwiki.platform</id>
79 <!-- здесь тоже -->
80 <name>xwiki-platform-oldcore</name>
81 <!-- А вот эту ссылку
82 на репозиторий xwiki
83 можно довольно просто найти при поиске
84 зависимости xwiki-platform-oldcore
85 на сайте mvnrepository.com -->
86 <url>https://maven.xwiki.org/releases/</url>
87 </repository>
88 </repositories>
89
90 <build>
91 <finalName>firstMavenWebAp</finalName>
92 <pluginManagement>
93 <plugins>
94 <plugin>
95 <groupId>org.apache.maven.plugins</groupId>
96 <artifactId>maven-war-plugin</artifactId>
97 <version>3.4.0</version>
98
99 <configuration>
100 <webResources>
101 <resource>
102 <directory>resourcedir</directory>
103 </resource>
104 </webResources>
105 </configuration>
106 </plugin>
107 </plugins>
108 </pluginManagement>
109 </build>
110</project>
Коррективы в проекте
Давайте удалим файл 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:
1package com.mavenwebapps.firstMavenWebAp.config;
2
3import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
4
5//Этот класс вместо web.xml. Здесь конфигурируем
6//DispatcherServlet как мы это делали в web.xml
7//только Java кодом.
8public class MySpringMvcDispServlInit
9 extends AbstractAnnotationConfigDispatcherServletInitializer {
10
11 //Для этого переопределяем методы класса с названием
12 //AbstractAnnotationConfigDispatcherServletInitializer.
13
14 //Пишем вот такой метод)
15 @Override
16 protected Class<?>[] getRootConfigClasses() {
17 return null;
18 }
19
20 @Override
21 protected Class<?>[] getServletConfigClasses() {
22 //Помним что в web.xml мы указывали параметром
23 //сервлету имя файла конфигурации бинов.
24 //Здесь тоже передаем имя этого файла
25 //только в данном случае как показано ниже.
26 return new Class<?>[] { JavaSpringConfig.class };
27 }
28
29 @Override
30 protected String[] getServletMappings() {
31 //И также как и в web.xml задаем путь по которому
32 //происходит переход к DispatcherServlet.
33 //"/" значит по корневому пути, то есть по пути
34 //http://localhost:8080/firstMavenWebProject/
35 return new String[] { "/" };
36 }
37
38}
Настройка applicationContext
Давайте теперь в файлике для настройки спринг, как мы уже делали это раньше, настроим путь к директории, в которой будут искаться классы с аннотациями по которым будут создаваться бины, то есть путь com.MavenWebAps.firstMavenWebAp
.
Здесь же настроим путь к папке с View. Это мы уже тоже делали раньше.
1package com.MavenWebAps.firstMavenWebAp.config;
2
3import org.springframework.context.annotation.Bean;
4import org.springframework.context.annotation.ComponentScan;
5import org.springframework.context.annotation.Configuration;
6import org.springframework.web.servlet.config.annotation.EnableWebMvc;
7import org.springframework.web.servlet.view.InternalResourceViewResolver;
8
9//Это класс конфигурации спринг бинов
10//вместо applicationContext.xml.
11@Configuration
12@EnableWebMvc
13@ComponentScan(basePackages ="com.MavenWebAps.firstMavenWebAp")
14public class JavaSpringConfig {
15
16 //Здесь также как мы делали в xml создаем бин,
17 //который определяет путь к вьюхам.
18 @Bean
19 public ViewResolver viewResolver() {
20
21 InternalResourceViewResolver viewResolver =
22 new InternalResourceViewResolver();
23
24 viewResolver.setPrefix("/WEB-INF/jsp/");
25 viewResolver.setSuffix(".jsp");
26
27 return viewResolver;
28 }
29
30}
31
32//То есть в нашем проекте не осталось xml ВООБЩЕ.
Настройка контроллера
Создадим контроллер, в котором определим, что по корневому пути, то есть по http://localhost:8080/firstMavenWebAp/
, будет происходить переход к somePage.jsp
1package com.MavenWebApps.firstMavenWebApp.controller;
2
3import org.springframework.stereotype.Controller;
4
5@Controller
6public class SimpleController {
7
8 @GetMapping("/")
9 public String goSomePage() {
10 return "somePage";
11 }
12}
Проверка работы приложения
После этого запускаем приложение стандартным образом и видим содержимое somePage.jsp:

Дополнительные материалы
Следующие уроки
Создание CRUD-приложения с Hibernate и Spring
22
мин.
Hibernate CRUD приложение с сервисным уровнем
23
мин.
Что такое REST API?
21
мин.