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