Общий вид pom-файла
Структура проекта описывается в файле pom.xml, который должен находиться в корневой папке проекта. Содержимое проектного файла имеет следующий вид:
<!—Описание текущего проекта -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<packaging>...</packaging>
<version>...</version>
<properties>
<!-- Секция свойств -->
</properties>
<repositories>
<!-- Секция репозиториев -->
</repositories>
<dependencies>
<!-- Секция зависимостей -->
</dependencies>
<build>
<!-- Секция сборки -->
</build>
</project>
Не все секции могут присутствовать в описании pom.xml. Так секции properties и repositories часто не используются. Параметры описания текущего проекта являются обязательными. Про последнюю секцию мы сейчас и поговорим.
Секция build
Секция build не является обязательной – Maven умеет собирать проект и без нее. Но если ты хочешь настроить сборку более-менее сложного проекта, то понимание как там все устроено тебе пригодится.
Давай рассмотрим простой пример:
<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.
Секцию сборки можно настраивать особенно гибко. Подробнее мы рассмотрим ее немного позже.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ