Вернуться к содержанию курса
Введение в сборщик проектов Maven
Материалы для самоподготовки
Основные материалы
- Курс на Learn
Дополнительные материалы
- Видео: Ant и Maven
- Jenkov: Maven
- Документация Мавена
- Туториалы по Мавену
Практическая работа
- Скачайте и поставьте Maven себе на рабочую машину. Добавьте директорию в переменную PATH. Выполните в конслои команду
mvn -version
, чтобы удостовериться, что вы все сделали правильно.
- Создайте новый мавен проект. В качестве groupId используйте связку
ru.фамилия.имя
, artifactId задайт как maven-practice
.
Убедитесь, что структура проекта сответствует предыдущим практическим работам.
- Добавьте плагин для компиляции java и установите уровень языка
1.8
.
- В секции зависимостей добавьте
commons-lang
, из группы зависимостей apache
. На сайте mvn central
подберите
наибольшую версию для этой зависимости. В Main попробуйте вызвать какую-нибудь функцию из этой библиотеки, например
org.apache.commons.text.WordUtils.capitalize(text)
.
- Выполните фазу мавена под названием
package
. Проверьте наличие и содержание папки target
в директории проекта.
- Добавьте плагин в
pom.xml
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>...</mainClass> <!-- Объявляем наш Main Class -->
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef> <!-- Объявляем имя для jar -->
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- Привязываем выполнение к конкретной фазе мавена -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
- Выполните команду
mvn clean package
- Откройте получившийся архив
...-1.0-SNAPSHOT-jar-with-dependencies.jar
Проверьте наличие там пакетов из группы
org.apache.commons
.
- Выполните команду
mvn clean install
. В чем её отличие от предыдущей?
- Добавьте в ваш pom.xml
Maven Javadoc Plugin
. Добавьте джавадок к методу Main и выполните javadoc:javadoc
. Проверьте
успешность выполнения плагина
Вопросы для самоконтроля
Maven
- Зачем нужны сборщики проектов, типа Maven? Какие задачи они обычно выполняют?
- Что такое архетип мавена? Можем ли мы создать свой архетип?
- Что такое pom.xml? Из каких обязательных и необязательных блоков состоит pom?
- Что такое артефакт? Что он может из себя представлять?
- Чем отличются
WAR
и JAR
архивы?
- Что такое зависимости проекта? Где они определяются?
- Как отличать между собой артефакты и зависимости?
- Что такое фазы мавена?
- Что означает фаза
clean
?
- В чем отличие фаз
package
и install
?
- Что такое плагины? Приведите примеры плагинов мавена и как их подключить в проект.
- Что такое мавен репозиторий? Какие 3 типа мавен репозиториев бывают?
- Где находятся артефакты, которые были собраны локально?
- Какие скоупы зависимостей существуют? Какая используется по дефолту?
- Какой скоуп следует использовать, если мы не хотим, чтобы зависимость попала в артефакт?
- Что такое мавен профили? Для чего они могут быть полезны?
- Мы захотели вынести версию зависимости
apache-commons
в отдельное поле в pom. Возможно ли это?
- Что такое транзитивная зависимость? Умеет ли мавен разрешать транзитивные зависимости?
- В чем вы видите плюсы и минусы мавена?