notes:java:maven
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:java:maven [2018/12/14 16:55] – [Какая структура каталогов в Maven?] kibi | notes:java:maven [2018/12/19 18:35] (current) – kibi | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== Maven FAQ ====== |
{{tag> | {{tag> | ||
+ | |||
+ | Основные ссылки по Maven: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
===== Что такое сборка проекта, | ===== Что такое сборка проекта, | ||
- | Сборка (англ. assembly) - двоичный файл, содержащий исполняемый код программы или другой, | + | <wrap em>Сборка (англ. assembly)</ |
<wrap em> | <wrap em> | ||
Line 30: | Line 35: | ||
* Хорошая интеграция со средами разработки. Основные среды разработки на java легко открывают проекты, | * Хорошая интеграция со средами разработки. Основные среды разработки на java легко открывают проекты, | ||
* Как следствие, | * Как следствие, | ||
- | * Декларативное описание проекта. Указано **что** надо сделать, | + | * Декларативное описание проекта. Указано **что, где и когда** надо сделать, |
===== Какие недостатки Maven? ===== | ===== Какие недостатки Maven? ===== | ||
Line 38: | Line 43: | ||
* При таком объёме необходимых знаний документации не так много, особенно по каким-то специальным моментам. Да и просто читать придётся много. Порог вхождения, | * При таком объёме необходимых знаний документации не так много, особенно по каким-то специальным моментам. Да и просто читать придётся много. Порог вхождения, | ||
* Если нужно найти какой-то специальный плагин - это будет сделать непросто, | * Если нужно найти какой-то специальный плагин - это будет сделать непросто, | ||
- | * Нужен доступ в интернет (или придётся разворачивать собственный репозиторий, что трудоёмко) | + | * Нужен доступ в интернет (или придётся разворачивать собственный репозитарий, что трудоёмко) |
* Большие трудности, | * Большие трудности, | ||
Line 72: | Line 77: | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
| '' | | '' | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
| '' | | '' | ||
| '' | | '' | ||
Line 98: | Line 103: | ||
<code xml>< | <code xml>< | ||
xmlns: | xmlns: | ||
- | xsi: | + | xsi: |
- | | + | |
Внутри тега '' | Внутри тега '' | ||
Line 105: | Line 109: | ||
===== Какую информацию содержит pom.xml? ===== | ===== Какую информацию содержит pom.xml? ===== | ||
- | Среди информации которую содержит pom.xml мы можем выделить следующие: | + | Среди информации которую содержит pom.xml, мы можем выделить следующие |
- | Зависимости проекта (project dependencies) | + | |
- | Плагины (plugins) | + | |
- | Задачи/ | + | |
- | Профиль создания (build profiles) | + | |
- | Версия проекта (project version) | + | |
- | Разработчики (developers) | + | |
- | Список рассылки (mailing list) | + | |
- | Что такое супер POM? | + | ===== Что такое супер POM? ===== |
- | Все POM - файлы являются наследниками родительского pom.xml. Этот POM-файл называется Super POM и содержит значения, | + | |
- | Какие элементы необходимы для минимального POM? | + | Все POM-файлы являются наследниками родительского |
- | Требуемые элементы для минимального POM ето корневий елемент, modelVersion, | + | |
+ | ===== Какие элементы необходимы для минимального POM? ===== | ||
- | Что такое зависимости в Maven? | + | Обязательные элементы для минимального POM это корневой элемент, '' |
- | Зависимость (dependency) - это | + | <code xml> |
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
- | Что такое | + | ===== Что такое зависимости в Maven? ===== |
- | Артефакт (artefact) - это, по сути, любая библиотека, | + | |
- | Что такое плагин | + | <wrap em>Зависимость |
- | Плагин (plugin) - это | + | |
- | Что такое | + | ===== Что такое артефакт в Maven? ===== |
- | Задача (goal) - это специальная задача, | + | |
- | Что | + | <wrap em>Артефакт (artefact)</ |
- | Архетип | + | |
- | Что такое репозиторий в Maven? | + | ===== Что такое плагин в Maven? ===== |
- | Репозиторий (repository) - глобальное хранилище | + | |
- | Какие типы репозитория существуют в Maven? | + | <wrap em>Плагин (plugin)</ |
- | В Maven существуют три типы репозитория: | + | |
- | Локальный (local) репозиторий - это директория, | + | |
- | Центральный | + | |
- | Удалённые (remote) репозиторий - иногда, | + | |
- | Какая команда установляет JAR-файл в локальное хранилище? | + | ===== Что такое задача в Maven? ===== |
- | mvn install | + | |
+ | <wrap em> | ||
+ | |||
+ | ===== Что такое архетип в Maven? ===== | ||
+ | |||
+ | <wrap em> | ||
+ | |||
+ | ===== Что такое репозитарий в Maven? ===== | ||
+ | |||
+ | <wrap em> | ||
+ | |||
+ | ===== Какие типы репозитария существуют в Maven? ===== | ||
+ | |||
+ | В Maven существуют три типа репозитариев: | ||
+ | * **Локальный (local) репозитарий** - это директория, | ||
+ | * **Центральный (central) репозитарий** - это репозитарий, | ||
+ | * **Удалённый (remote) репозитарий**. Иногда Maven не может найти необходимые зависимости в центральном репозитарии, | ||
+ | |||
+ | ===== Какая команда устанавливает JAR-файл в локальное хранилище | ||
+ | |||
+ | <code bash>mvn install</ | ||
+ | |||
+ | ===== Какой порядок поиска зависимостей Maven? ===== | ||
- | Какой порядок поиска зависимостей Maven? | ||
Когда мы выполняем собрку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке: | Когда мы выполняем собрку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке: | ||
- | Поиск зависимостей в локальном репозитории Если зависимости не обнаружены, | + | - Поиск зависимостей в локальном репозитарии. Если зависимости не обнаружены, |
- | Поиск зависимостей в центральном репозитории. Если они не обнаружены и удалённый репозиторий определён, | + | |
- | Если удалённый репозиторий не определён, | + | |
- | Поиск зависимостей на удалённом репозитории, если они найдены, | + | |
- | Какие два файла настройки есть в Maven, как они называются и где расположены? | + | ===== Какие два файла настройки есть в Maven, как они называются и где расположены? |
- | В Maven, файлы настройки называются settings.xml, | + | |
- | Каталог где установлен Maven: $M2_Home/ | + | |
- | Домашняя директория пользователя: | + | |
- | Что такое жизненный цикл сборки в Maven? | + | В Maven, файлы настройки называются '' |
- | Жизненный цикл сборки(Lifecycle) - это чётко опредлённая последовательность фаз во время выполнения которых должын быть достигнуты определённые цели. Здесь фаза представляет собой стадию жизненного цикла. | + | * каталог где установлен Maven: '' |
+ | * домашняя директория пользователя: | ||
+ | |||
+ | ===== Что такое жизненный цикл сборки в Maven? | ||
+ | |||
+ | <wrap em>Жизненный цикл сборки (Lifecycle)</ | ||
+ | |||
+ | ===== Назовите основные фазы жизненного цикла сборки Maven? ===== | ||
- | Назовите основные фазы жизненного цикла сборки Maven? | ||
Когда Maven начинает сборку проекта, | Когда Maven начинает сборку проекта, | ||
- | В Maven есть следующие 3 стандартных жизненных цикла: | ||
- | Очистка (clean) - очищает артефакты, | ||
- | Сборка (default or build) - используется для создания приложения. | ||
- | Создание сайта проекта (site) - генерирует документацию сайта для проекта. | ||
- | Что делает команда mvn site? | + | В Maven есть следующие три стандартных жизненных цикла: |
- | mvn site - создает веб-сайт проекта. | + | * **Очистка (clean)** - очищает артефакты, |
+ | * **Сборка (default or build)** - используется для создания приложения. | ||
+ | * **Создание сайта проекта (site)** - генерирует документацию сайта для проекта. | ||
+ | |||
+ | ===== Что делает команда mvn site? ===== | ||
+ | |||
+ | <code bash>mvn site</ | ||
+ | |||
+ | ===== Что делает команда mvn clean? ===== | ||
- | Что делает команда | + | <code bash>mvn clean</ |
- | mvn clean - эта команда очищает целевую директорию от созданных в процессе сборки файлов. | + | |
===== Из каких фаз состоит жизненный цикл сборки Clean? ===== | ===== Из каких фаз состоит жизненный цикл сборки Clean? ===== | ||
Line 205: | Line 233: | ||
* **post-integration-test** - выполняет действия, | * **post-integration-test** - выполняет действия, | ||
* **verify** - выполняет любые проверки для подтверждения того, что пакет пригоден и отвечает критериям качества. | * **verify** - выполняет любые проверки для подтверждения того, что пакет пригоден и отвечает критериям качества. | ||
- | * **install** - переносит пакет в локальный репозиторий, откуда он будет доступен для использования как зависимость в других проектах. | + | * **install** - переносит пакет в локальный репозитарий, откуда он будет доступен для использования как зависимость в других проектах. |
- | * **deploy** - копирует финальный пакет (архив) в удалённый репозиторий для, того, чтобы сделать его доступным другим разработчикам и проектам. | + | * **deploy** - копирует финальный пакет (архив) в удалённый репозитарий для, того, чтобы сделать его доступным другим разработчикам и проектам. |
Здесь также необходимо уточнить два момента: | Здесь также необходимо уточнить два момента: | ||
Line 226: | Line 254: | ||
<code bash>mvn clean dependency: | <code bash>mvn clean dependency: | ||
- | Аргументы '' | + | Аргументы '' |
+ | |||
+ | В этом случае, | ||
===== Что такое профиль сборки (Build Profile)? ===== | ===== Что такое профиль сборки (Build Profile)? ===== | ||
Line 270: | Line 300: | ||
===== Когда Maven использует внешние зависимости? | ===== Когда Maven использует внешние зависимости? | ||
- | Если необходимые файлы не найдены ни в центральном, | + | Если необходимые файлы не найдены ни в центральном, |
===== Что нужно определить для внешней зависимости? | ===== Что нужно определить для внешней зависимости? | ||
Line 287: | Line 317: | ||
===== Что такое SNAPSHOT в Maven? ===== | ===== Что такое SNAPSHOT в Maven? ===== | ||
- | <wrap em> | + | <wrap em> |
===== В чем разница между snapshot и версией? | ===== В чем разница между snapshot и версией? | ||
- | В случае с **обычной версией**, | + | В случае с **обычной версией**, |
В случае со **snapshot**, | В случае со **snapshot**, | ||
Line 310: | Line 340: | ||
* **runtime** - эта область указывает на то, что зависимость не обязательна для '' | * **runtime** - эта область указывает на то, что зависимость не обязательна для '' | ||
* **test** - эта область указывает, | * **test** - эта область указывает, | ||
- | * **system** - эта область похожа на '' | + | * **system** - эта область похожа на '' |
* **import** - эта область используется в зависимости типа '' | * **import** - эта область используется в зависимости типа '' | ||
Line 344: | Line 374: | ||
===== При сборке проекта Maven постоянно проверяет наличие обновлений в интернете. Можете ли вы собрать проект без интернета? | ===== При сборке проекта Maven постоянно проверяет наличие обновлений в интернете. Можете ли вы собрать проект без интернета? | ||
- | Да, можете, | + | Да, можете, |
===== Если при сборке проекта в тестах произошла ошибка, | ===== Если при сборке проекта в тестах произошла ошибка, | ||
Line 373: | Line 403: | ||
* **description** - элемент представляет собой общее описание проекта. Это часто используется в генерации документации Maven | * **description** - элемент представляет собой общее описание проекта. Это часто используется в генерации документации Maven | ||
* **url** - интернет-страница проекта | * **url** - интернет-страница проекта | ||
- | * **repositories** - репозитории для артефактов | + | * **repositories** - репозитарии для артефактов |
- | * **pluginRepositories** - репозитории для плагинов Maven | + | * **pluginRepositories** - репозитарии для плагинов Maven |
< | < |
notes/java/maven.1544795727.txt.gz · Last modified: 2018/12/14 16:55 by kibi