Курс обучения программированию на Java | Сайт проекта

< Курс обучения программированию на Java >

Вернуться к содержанию курса

Введение в сборщик проектов Maven

Материалы для самоподготовки

Основные материалы

  1. Курс на Learn

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

  1. Видео: Ant и Maven
  2. Jenkov: Maven
  3. Документация Мавена
  4. Туториалы по Мавену

Практическая работа

  1. Скачайте и поставьте Maven себе на рабочую машину. Добавьте директорию в переменную PATH. Выполните в конслои команду mvn -version, чтобы удостовериться, что вы все сделали правильно.
  2. Создайте новый мавен проект. В качестве groupId используйте связку ru.фамилия.имя, artifactId задайт как maven-practice. Убедитесь, что структура проекта сответствует предыдущим практическим работам.
  3. Добавьте плагин для компиляции java и установите уровень языка 1.8.
  4. В секции зависимостей добавьте commons-lang, из группы зависимостей apache. На сайте mvn central подберите наибольшую версию для этой зависимости. В Main попробуйте вызвать какую-нибудь функцию из этой библиотеки, например org.apache.commons.text.WordUtils.capitalize(text).
  5. Выполните фазу мавена под названием package. Проверьте наличие и содержание папки target в директории проекта.
  6. Добавьте плагин в 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>
    
  7. Выполните команду mvn clean package
  8. Откройте получившийся архив ...-1.0-SNAPSHOT-jar-with-dependencies.jar Проверьте наличие там пакетов из группы org.apache.commons.
  9. Выполните команду mvn clean install. В чем её отличие от предыдущей?
  10. Добавьте в ваш pom.xml Maven Javadoc Plugin. Добавьте джавадок к методу Main и выполните javadoc:javadoc. Проверьте успешность выполнения плагина

Вопросы для самоконтроля

Maven

  1. Зачем нужны сборщики проектов, типа Maven? Какие задачи они обычно выполняют?
  2. Что такое архетип мавена? Можем ли мы создать свой архетип?
  3. Что такое pom.xml? Из каких обязательных и необязательных блоков состоит pom?
  4. Что такое артефакт? Что он может из себя представлять?
  5. Чем отличются WAR и JAR архивы?
  6. Что такое зависимости проекта? Где они определяются?
  7. Как отличать между собой артефакты и зависимости?
  8. Что такое фазы мавена?
  9. Что означает фаза clean?
  10. В чем отличие фаз package и install?
  11. Что такое плагины? Приведите примеры плагинов мавена и как их подключить в проект.
  12. Что такое мавен репозиторий? Какие 3 типа мавен репозиториев бывают?
  13. Где находятся артефакты, которые были собраны локально?
  14. Какие скоупы зависимостей существуют? Какая используется по дефолту?
  15. Какой скоуп следует использовать, если мы не хотим, чтобы зависимость попала в артефакт?
  16. Что такое мавен профили? Для чего они могут быть полезны?
  17. Мы захотели вынести версию зависимости apache-commons в отдельное поле в pom. Возможно ли это?
  18. Что такое транзитивная зависимость? Умеет ли мавен разрешать транзитивные зависимости?
  19. В чем вы видите плюсы и минусы мавена?