Топ-100Настройка файла pom.xml в Maven - CodOrbits
LogoCodOrbits

Раздел: Maven

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

Все разделы
Иконка Maven

Настройка файла 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:


Дополнительные материалы

Additional Material Icon

Следующие уроки

Создание CRUD-приложения с Hibernate и Spring

22
мин.

Similar Articles Icon
Divider

Hibernate CRUD приложение с сервисным уровнем

23
мин.

Similar Articles Icon
Divider

Что такое REST API?

21
мин.

Similar Articles Icon