JavaRush /Курсы /JSP & Servlets /Сборка Maven-проекта

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

JSP & Servlets
1 уровень , 7 лекция
Открыта

Общий вид pom-файла

Структура проекта описывается в файле pom.xml, который должен находиться в корневой папке проекта. Содержимое проектного файла имеет следующий вид:

<project>
         <!—Описание текущего проекта -->
         <groupId>...</groupId>
        <artifactId>...</artifactId>
        <packaging>...</packaging>
        <version>...</version>


         <properties>
             <!-- Секция свойств -->
         </properties>

         <repositories>
             <!-- Секция репозиториев -->
         </repositories>


         <dependencies>
             <!-- Секция зависимостей -->
         </dependencies>

         <build>
             <!-- Секция сборки -->
         </build>
</project>

Не все секции могут присутствовать в описании pom.xml. Так секции properties и repositories часто не используются. Параметры описания текущего проекта являются обязательными. Про последнюю секцию мы сейчас и поговорим.

Секция build

Секция build не является обязательной – Maven умеет собирать проект и без нее. Но если ты хочешь настроить сборку более-менее сложного проекта, то понимание как там все устроено тебе пригодится.

Давай рассмотрим простой пример:

  <build>
         <finalName>projectName</finalName>
         <sourceDirectory>${basedir}/src/java</sourceDirectory>
         <outputDirectory>${basedir}/targetDir</outputDirectory>
        <resources>
                 <resource>
                <directory>${basedir}/src/java/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
                </resource>

        </resources>
        <plugins>
                . . .
        </plugins>
    </build>

Данная секция содержит основную информацию по сборке: где расположены Java-файлы, файлы ресурсов, какие плагины используются, куда складывать собранный проект.

Основных тегов тут четыре:

  • <finalName>
  • <sourceDirectory>
  • <outputDirectory>
  • <resources>

Кратко разберем их назначение:

Тег <finalName> задает имя результирующего файла сборки (jar, war, ear..), который создается в фазе package. Если параметр не задан, то используется значение по умолчанию — artifactId-version.

Тег <sourceDirectory> позволяет переопределить месторасположения файлов с исходным кодом. По умолчанию файлы располагаются в директории ${basedir}/src/main/java, но можно указать и любое другое место.

Тег <outputDirectory> задает директорию, куда компилятор будет сохранять результаты компиляции – *.class файлы. По умолчанию определено значение target/classes.

Тег <resources> и вложенные в нее тэги <resource> определяют местоположение файлов ресурсов. Файлы ресурсов при сборке просто копируются в директорию outputDirectory. Значение по умолчанию директории с ресурсами равно src/main/resources.

Секцию сборки можно настраивать особенно гибко. Подробнее мы рассмотрим ее немного позже.

Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
21 ноября 2025
Думаю, чтобы въехать во всё прочитанное нужно поставить себе задачку создать пет проект. Я себе выбрал в качестве такого "Десктопное приложение обращающееся к СУБД и записывающее туда данные со сканера штрихкода". в 2025 нейронки подсказывали какие бибилиотеки взять. Очень много было отсылок к Maven. Не изучая этот квест, я уже с Maven поработал. Пет проект успешно создал и сам его у себя принял. Сейчас читаю эту главу и многое опробованное ранее встаёт в голове на своё место
Svetlana S Уровень 3
25 августа 2025
Тут практика нужна, иначе фиг это запомнишь
Novichek_D290 Уровень 18
15 марта 2025
крч для первого озрнакомления так себе. Теория вроде есть, а применение не понятно. Вроде всё понятно, но ничего не понятно. Зачем, когда, как - сиди гадай. А ещё лучше - гугли. А зачем? Я, вроде, гугля сюда пришёл. Как закрепление знаний тоже сомнительно. Хотелось бы хоть какие-то примеры с тем как что пишется и на что влияет. Сейчас идёт просто сухое перечисление состава. Я бы хотел видеть, чтобы вы разбирали на примере некоего реального проекта мавен настройку и объясняли что зачем и как оно влияет на код и конечный резульат. Ну чтобы хоть за что-то реальное мозг мог зацепиться, а не как сейчас - пустота
Suffermore Уровень 30
24 сентября 2024
Прочитал,все лекции уровня,но отображение прогресса 0 из 7,приходится запоминать,где остановился(
LuneFox Уровень 41 Expert
10 июня 2022
Но если вы хотите настроить сборку более-менее сложного проекта, то понимание как там все устроено тебе пригодится. Тогда уж "если ты хочешь" или "вам пригодится" :) Хотя, если представить, что нас тут много, а ответственный за мавен только я...
JRU Mentor-02 Уровень 103 Mentor
13 июня 2022
Спасибо, исправили)
RuMirNul Уровень 2
4 июня 2022
Ошибка: "green"><sourceDirectory>${basedir}/src/jav</sourceDirectory>" Видимо хотели зелёным цветом отметить строку, но что-то пошло не так
Максим Уровень 108
10 июня 2022
И здесь так же) <build> <!-- Секция сборки --> span class="text-green"></build>
JRU Mentor-02 Уровень 103 Mentor
13 июня 2022
Спасибо, исправили)