Киби.ru

Живой сайт об актуальных проектах

User Tools

Site Tools


notes:java:maven

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:java:maven [2018/12/14 16:14] kibinotes:java:maven [2018/12/19 18:35] (current) kibi
Line 1: Line 1:
-====== Вопросы и ответы по Maven ======+====== Maven FAQ ======
  
 {{tag>maven java}} {{tag>maven java}}
 +
 +Основные ссылки по Maven:
 +
 +  * [[https://maven.apache.org/|Сайт проекта]]
 +  * [[https://mvnrepository.com/|Основной репозитарий Maven]]
  
 ===== Что такое сборка проекта, автоматизация сборки? ===== ===== Что такое сборка проекта, автоматизация сборки? =====
  
-Сборка (англ. assembly) - двоичный файл, содержащий исполняемый код программы или другой, подготовленный для использования информационный продукт.+<wrap em>Сборка (англ. assembly)</wrap> - двоичный файл, содержащий исполняемый код программы или другой, подготовленный для использования информационный продукт. Сборка проекта - это в том числе процесс создания необходимого двоичного файла
  
 <wrap em>Автоматизация сборки</wrap> - этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как: <wrap em>Автоматизация сборки</wrap> - этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как:
Line 16: Line 21:
 ===== Что такое Maven? Как он работает? ===== ===== Что такое Maven? Как он работает? =====
  
-[[https://maven.apache.org/|Apache Maven]] - это Java фреймворк для автоматизации сборки проектов, компиляции, создания jar, создания дистрибутива программы, генерации документации. Если собирать большие проекты с командной строки, то команда для сборки будет очень длинной, поэтому её иногда записывают в bat/sh скрипт. Но такие скрипты зависят от платформы. Для того чтобы избавиться от этой зависимостии и упростить написание скрипта используют инструменты для сборки проекта.+[[https://maven.apache.org/|Apache Maven]] - это Java фреймворк для автоматизации сборки проектов, компиляции, создания jar, создания дистрибутива программы, генерации документации. 
  
-Maven, обеспечивает декларативную, а не императивную сборку проекта. То есть, в файлах проекта ''pom.xml'' содержится его декларативное описание, а не отдельные команды. Все задачи по обработке файлов Maven выполняется через плагины.+Если собирать большие проекты с командной строкито команда для сборки будет очень длинной, поэтому её иногда записывают в bat/sh скрипт. Но такие скрипты зависят от платформы. Для того чтобы избавиться от этой зависимости и упростить написание скрипта, используют инструменты для сборки проекта. 
 + 
 +Maven обеспечивает декларативную, а не императивную сборку проекта. То есть, в файлах проекта ''pom.xml'' содержится его описание, а не отдельные команды. Все задачи по обработке файлов в Maven выполняется через плагины.
  
 ===== Какие преимущества Maven? ===== ===== Какие преимущества Maven? =====
  
 Основные преимущества Maven: Основные преимущества Maven:
-Независимость от OS. Сборка проекта происходит в любой операционной системе. Файл проекта один и тот же. +  * Независимость от ОС. Сборка проекта происходит в любой операционной системе. Файл проекта один и тот же. 
-Управление зависимостями. Редко какие проекты пишутся без использования сторонних библиотек(зависимостей). Эти сторонние библиотеки зачастую тоже в свою очередь используют библиотеки разных версий. Maven позволяет управлять такими сложными зависимостями. Что позволяет разрешать конфликты версий и в случае необходимости легко переходить на новые версии библиотек. +  Управление зависимостями. Редко какие проекты пишутся без использования сторонних библиотек(зависимостей). Эти сторонние библиотеки зачастую тоже в свою очередь используют библиотеки разных версий. Maven позволяет управлять такими сложными зависимостями. Это позволяет разрешать конфликты версийи в случае необходимостилегко переходить на новые версии библиотек. 
-Возможна сборка из командной строки. Такое часто необходимо для автоматической сборки проекта на сервере (Continuous Integration). +  Возможна сборка из командной строки. Такое часто необходимо для автоматической сборки проекта на сервере ([[wp>Continuous Integration]]). 
-Хорошая интеграция со средами разработки. Основные среды разработки на java легко открывают проекты которые собираются c помощью maven. При этом зачастую проект настраивать не нужно он сразу готов к дальнейшей разработке.  +  Хорошая интеграция со средами разработки. Основные среды разработки на java легко открывают проектыкоторые собираются c помощью maven. При этом зачастую проект настраивать не нужноон сразу готов к дальнейшей разработке.  
-Как следствие если с проектом работают в разных средах разработки, то maven удобный способ хранения настроек. Настроечный файл среды разработки и для сборки один и тот же - меньше дублирования данных и соответственно ошибок. +  Как следствиеесли с проектом работают в разных средах разработки, то maven удобный способ хранения настроек. Настроечный файл среды разработки и для сборки один и тот же - меньше дублирования данных исоответственноошибок. 
-Декларативное описание проекта.+  Декларативное описание проекта. Указано **что, где и когда** надо сделать, а не **как** надо сделать. 
 + 
 +===== Какие недостатки Maven? =====
  
-Какие недостатки Maven? 
 Недостатки Maven: Недостатки Maven:
-Неочевидность. Если в Ant указывается команда на удаление и удаляется файл, то в случае Maven надо всем сердцем довериться плагину и документации по нему. +  * Неочевидность. Если в [[https://ant.apache.org/|Apache Ant]] указывается команда на удалениеи удаляется файл, то в случае Maven надо всем сердцем [[https://stackoverflow.com/questions/48949025/how-to-delete-a-folder-at-maven-clean-phase|довериться плагину]] и документации по нему. 
-При таком объёме необходимых знаний документации не так много, особенно по каким-то специальным моментам. Да и просто читать придётся много. Порог вхождения, если потребуется собирать даже не самое сложное приложение куда выше, чем у Ant. +  При таком объёме необходимых знаний документации не так много, особенно по каким-то специальным моментам. Да и просто читать придётся много. Порог вхождения, если потребуется собирать даже не самое сложное приложение куда выше, чем у Ant. 
-Если нужно найти какой-то специальный плагин - это будет сделать непросто, плагинов много. И не факт, что найденный подойдёт на все 100% и будет работать без ошибок. +  Если нужно найти какой-то специальный плагин - это будет сделать непросто, плагинов много. И не факт, что найденный подойдёт на все 100% и будет работать без ошибок. 
-Нужен доступ в интернет (или придётся разворачивать собственный репозиторий, что трудоёмко) +  Нужен доступ в интернет (или придётся разворачивать собственный репозитарий, что трудоёмко) 
-Большие трудности, если проект не типовий.+  Большие трудности, если проект не типовой. 
 + 
 +===== Какими аспектами управляет Maven? =====
  
-Какими аспектами управляет Maven? 
 Вот основные аспекты, которыми позволяет управлять Maven: Вот основные аспекты, которыми позволяет управлять Maven:
-Создание (Build) +  * Создание (Build) 
-Документирование (Documentation) +  Документирование (Documentation) 
-Отчёты (Reporting) +  Отчёты (Reporting) 
-Зависимости (Dependencies) +  Зависимости (Dependencies) 
-Релизы (Releases) +  Релизы (Releases) 
-SCM +  * Системы контроля версий (SCM) 
-Список рассылки (Mailing list) +  Список рассылки (Mailing list) 
-Дистрибьюция (Distribution)+  Дистрибьюция (Distribution) 
 + 
 +===== Как узнать, какую версию Maven вы используете? ===== 
 + 
 +Версию можно узнать с помощью следующей команды: 
 +<code bash>mvn --version</code>
  
-Как узнать какую версию Maven вы используете? +===== Для чего был создан Maven? =====
-С помощью следующий команди: +
-mvn --version+
  
-Для чего создан Maven? 
 Основной целью Maven является предоставление разработчику: Основной целью Maven является предоставление разработчику:
-Понятной модели для проектов, которая может быть использовано повторно и была бы проста в поддержании. +  * Понятной модели для проектов, которая может быть использована повторно и была бы проста в поддержании. 
-Плагины, которые могут взаимодействовать с этой моделью+  Плагинов, которые могут взаимодействовать с этой моделью.
-Структура и сожержание проекта Maven указывается в специальном xml-файле, который назывется Project Object Model (POM), который является базовым модулем всей системы.+
  
-Какая структура каталогов в Maven? +Структура и содержание проекта Maven указывается в специальном xml-файлекоторый назывется <wrap em>Project Object Model</wrap> (POM), который является базовым модулем всей системы.
-В Maven стандартная структура каталогов, благодаря ей отпадает необходимость прописывать пути к файлам проекта. В корневом каталоге проекта находится pom.xml и несколько текстовых файлов. Всё остальное хозяйство аккуратно разложено в подкаталогах. Главные из них - src и target. Однако, порядок сохраняется и вглубь:+
  
 +===== Какая структура каталогов в Maven? =====
  
-Где вы хранятся файлы классов при компиляции проекта Maven? +В Maven [[https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html|стандартная структура каталогов]], благодаря ей отпадает необходимость прописывать пути к файлам проекта. В корневом каталоге проекта находится ''pom.xml'' и несколько текстовых файлов. Всё остальное хозяйство аккуратно разложено в подкаталогах. Главные из них - **src** и **target**. Однако, порядок сохраняется и вглубь:
-Файлы классов хранятся в: ${basedir}/target/classes/.+
  
-Что такое pom.xml? +| ''src/main/java'' | Application/Library sources | исходный код приложения или библиотеки | 
-pom.xml - это XML-файл, который содержит информацию о деталях проектаи  конфигурации используемых для создания проекта на Maven. Он всегда находится в базовом каталоге проекта. Этот файл также содержит задачи и плагины. Во время выполнения задач, Maven ищет файл pom.xml в базовой директории проекта. Он читает его и получает необходимую информацию, после чего выполняет задачи+| ''src/main/resources'' | Application/Library resources | ресурсы приложения или библиотеки | 
-Корневой элемент <project>, схема, которая облегчает редактирование и проверку, и версия pom.xml. Внутри тега project содержится основная и обязательная информация о проекте.+| ''src/main/filters'' | Resource filter files | файлы с параметрами фильтрации ресурсов | 
 +| ''src/main/webapp'' | Web application sources | исходный код веб-приложения 
 +| ''src/test/java'' | Test sources | исходный код тестов (юнит-тестов) | 
 +| ''src/test/resources'' | Test resources | ресурсы юнит тестов 
 +| ''src/test/filters'' | Test resource filter files | файлы с параметрами фильтрации ресурсов для тестов | 
 +| ''src/it'' | Integration Tests (primarily for plugins) | интеграционные тесты (в основном для плагинов) | 
 +| ''src/assembly'' | Assembly descriptors | дескрипторы сборки 
 +| ''src/site'' | Site | вебсайт приложения (документация) | 
 +| ''LICENSE.txt'' | Project's license | лицензионное соглашение проекта | 
 +| ''NOTICE.txt'' | Notices and attributions required by libraries that the project depends on| замечания и необходимые атрибуты библиотек, от зависит проект | 
 +| ''README.txt'' | Project's readme | краткое описание проекта |
  
-Какую информацию содержит pom.xml? +===== Где хранятся файлы классов при компиляции проекта Maven? =====
-Среди информации которую содержит pom.xml мы можем выделить следующие: +
-Зависимости проекта (project dependencies) +
-Плагины (plugins) +
-Задачи/цели (goals) +
-Профиль создания (build profiles) +
-Версия проекта (project version) +
-Разработчики (developers) +
-Список рассылки (mailing list)+
  
-Что такое супер POM? +Файлы классов хранятся в: ''${basedir}/target/classes/''.
-Все POM - файлы являются наследниками родительского pom.xml. Этот POM-файл называется Super POM и содержит значения, унаследованные по умолчанию.+
  
-Какие элементы необходимы для минимального POM? +===== Что такое pom.xml? =====
-Требуемые элементы для минимального POM ето корневий елемент, modelVersion, GroupID, artifactID  и версияМинимальный POM файл:+
  
 +''pom.xml'' - это XML-файл, который содержит информацию о конфигурации и деталях проекта, используемых при создании проекта на Maven. Он всегда находится в базовом каталоге проекта. Этот файл также содержит описание задач, список и параметры плагинов. 
  
-Что такое зависимости в Maven? +Во время выполнения задач, Maven ищет файл ''pom.xml'' в базовой директории проекта. Он читает его и получает необходимую информацию, после чего выполняет задачи.
-Зависимость (dependency) - это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования.+
  
-Что такое артефакт в Maven? +Корневой элемент ''<project>'' содержит ссылку на схему XML, которая облегчает редактирование и проверку ''pom.xml'': 
-Артефакт (artefact) - это, по сути, любая библиотека, хранящаяся в репозитории (месте хранения). Это может быть какая-то зависимость или плагин. Обычно артефактом является JAR-файл, который хранится в репозитории Maven. Каждый артефакт содержит group ID, artifact ID и версию.+
  
-Что такое плагин в Maven? +<code xml><project xmlns="http://maven.apache.org/POM/4.0.0" 
-Плагин (plugin) это зависимости Maven'а, расширяющие его функционал.+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></code> 
  
-Что такое задача в Maven? +Внутри тега ''project'' содержится основная и обязательная информация о проекте.
-Задача (goal) - это специальная задача, которая относится к сборке проекта и его управлению. Она может привязываться как к нескольким фазам, так и ни к одной. Задача, которая не привязана ни к одной фазе, может быть запущена вне фаз сборки с помощью прямого вызова.+
  
-Что такое архетип в Maven? +===== Какую информацию содержит pom.xml? =====
-Архетип (archetype) - это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.+
  
-Что такое репозиторий в Maven? +Среди информации которую содержит pom.xml, мы можем выделить следующие блоки: 
-Репозиторий (repository) - глобальное хранилище всех библиотек, доступных для Maven, это место где хранятся артефакты: jar файлы, pom-файлы, javadoc, исходникиплагины.+  * Зависимости проекта (project dependencies) 
 +  * Плагины (plugins) 
 +  * Задачи/цели (goals) 
 +  * Профиль создания (build profiles) 
 +  * Версия проекта (project version) 
 +  * Разработчики (developers) 
 +  * Список рассылки (mailing list)
  
-Какие типы репозитория существуют в Maven? +===== Что такое супер POM? =====
-В Maven существуют три типы репозитория: +
-Локальный (local) репозиторий - это директория, которая хранится на нашем компьютере. Она создаётся в момент первого выполнения любой команды Maven. По умолчанию она расположена в <home директория>/.m2/repository - персональная для каждого пользователя. +
-Центральный (central) репозиторий - это репозиториий, который обеспечивается сообществом Maven. Он содержит огромное количество часто используемых библиотек. Который расположен в http://repo1.maven.org/maven2/ и доступен на чтение для всех пользователей в интернете. Если Maven не может найти зависимости в локальном репозитории, то автоматически начинается поиск необходимых файлов в центральном репозитории +
-Удалённые (remote) репозиторий - иногда, Maven не может найти необходимые зависимости в центральном репозитории. В этом случае, процесс сборки прерывается и в консоль выводится сообщение об ошибке. Для того, чтобы предотвратить подобную ситуацию, в Maven предусмотрен механизм Удалённого репозитория, который является репозиторием, который определяется самим разработчиком. Там могут храниться все необходимые зависимости.+
  
-Какая команда установляет JAR-файл в локальное хранилище? +Все POM-файлы являются наследниками родительского ''pom.xml''. Этот POM-файл называется <wrap em>Super POM</wrap> и содержит значения, унаследованные по умолчанию. 
-mvn install+ 
 +===== Какие элементы необходимы для минимального POM? ===== 
 + 
 +Обязательные элементы для минимального POM это корневой элемент, ''modelVersion'', ''GroupID'', ''artifactID'' и версия. Минимальный POM файл: 
 +<code xml> 
 +<project> 
 +  <modelVersion>4.0.0</modelVersion> 
 +  <groupId>org.codehaus.mojo</groupId> 
 +  <artifactId>my-project</artifactId> 
 +  <version>1.0</version> 
 +</project> 
 +</code> 
 + 
 +===== Что такое зависимости в Maven? ===== 
 + 
 +<wrap em>Зависимость (dependency)</wrap> - это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования. 
 + 
 +===== Что такое артефакт в Maven? ===== 
 + 
 +<wrap em>Артефакт (artefact)</wrap> - это, по сути, любая библиотека, хранящаяся в репозитарии (месте хранения). Это может быть какая-то зависимость или плагин. Обычно артефактом является JAR-файл, который хранится в репозитарии Maven. Каждый артефакт содержит ''group ID'', ''artifact ID'' и версию. 
 + 
 +===== Что такое плагин в Maven? ===== 
 + 
 +<wrap em>Плагин (plugin)</wrap> - это зависимости Maven'а, расширяющие его функционал. 
 + 
 +===== Что такое задача в Maven? ===== 
 + 
 +<wrap em>Задача (goal)</wrap> - это специальная задача, которая относится к сборке проекта и его управлению. Она может привязываться как к нескольким фазам, так и ни к одной. Задача, которая не привязана ни к одной фазе, может быть запущена вне фаз сборки с помощью прямого вызова. 
 + 
 +===== Что такое архетип в Maven? ===== 
 + 
 +<wrap em>Архетип (archetype)</wrap> - это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов. 
 + 
 +===== Что такое репозитарий в Maven? ===== 
 + 
 +<wrap em>репозитарий (repository)</wrap> - глобальное хранилище всех библиотек, доступных для Maven, это место где хранятся артефакты: jar файлы, pom-файлы, javadoc, исходники, плагины. 
 + 
 +===== Какие типы репозитария существуют в Maven===== 
 + 
 +В Maven существуют три типа репозитариев: 
 +  * **Локальный (local) репозитарий** - это директория, которая хранится на нашем компьютере. Она создаётся в момент первого выполнения любой команды Maven. По умолчанию она расположена в <home директория>/.m2/repository - персональная для каждого пользователя. Фактически она является кэшем для центрального и удалённого репозитариев. 
 +  * **Центральный (central) репозитарий** - это репозитарий, который обеспечивается сообществом Maven. Он содержит огромное количество часто используемых библиотек. Расположен по адресу http://repo1.maven.org/maven2/ и доступен на чтение для всех пользователей в интернете. Если Maven не может найти зависимости в локальном репозитарии, то автоматически начинается поиск необходимых файлов в центральном репозитарии. Для поиска по центральному репозитарию можно использовать сайт https://mvnrepository.com/ 
 +  * **Удалённый (remote) репозитарий**. Иногда Maven не может найти необходимые зависимости в центральном репозитарии, например при отсутствии интернета. В этом случае процесс сборки прерывается, и в консоль выводится сообщение об ошибке. Для того, чтобы предотвратить подобную ситуацию, в Maven предусмотрен механизм **удалённого репозитария**, который является репозитарием, определённым самим разработчиком. Там могут храниться все необходимые зависимости. 
 + 
 +===== Какая команда устанавливает JAR-файл в локальное хранилище (репозитарий)? ===== 
 + 
 +<code bash>mvn install</code> 
 + 
 +===== Какой порядок поиска зависимостей Maven? =====
  
-Какой порядок поиска зависимостей Maven? 
 Когда мы выполняем собрку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке: Когда мы выполняем собрку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке:
-Поиск зависимостей в локальном репозитории Если зависимости не обнаружены, происходит переход к шагу 2. +  - Поиск зависимостей в локальном репозитарииЕсли зависимости не обнаружены, происходит переход к шагу 2. 
-Поиск зависимостей в центральном репозитории. Если они не обнаружены и удалённый репозиторий определён, то происходит переход к шагу 4. +  Поиск зависимостей в центральном репозитарии. Если они не обнаружены и удалённый репозитарий определён, то происходит переход к шагу 4. 
-Если удалённый репозиторий не определён, то процесс сборки прекращается и выводится сообщение об ошибке. +  Если удалённый репозитарий не определён, то процесс сборки прекращается и выводится сообщение об ошибке. 
-Поиск зависимостей на удалённом репозитории, если они найдены, то происходит их загрузка в локальный репозиторий, если нет - выводится сообщение об ошибке.+  Поиск зависимостей на удалённом репозитарии, если они найдены, то происходит их загрузка в локальный репозитарий, если нет - выводится сообщение об ошибке. 
 + 
 +===== Какие два файла настройки есть в Maven, как они называются и где расположены? ===== 
 + 
 +В Maven, файлы настройки называются ''settings.xml'', и они расположены в двух местах: 
 +  * каталог где установлен Maven: ''$M2_Home/conf/settings.xml'' 
 +  * домашняя директория пользователя: ''${user.home}/.m2/settings.xml'' 
 + 
 +===== Что такое жизненный цикл сборки в Maven? =====
  
-Какие два файла настройки есть в Maven, как они называются и где расположены? +<wrap em>Жизненный цикл сборки (Lifecycle)</wrap> - это чётко определённая последовательность фазво время выполнения которых должны быть достигнуты определённые цели. Здесь фаза представляет собой стадию жизненного цикла.
-В Maven, файлы настройки называются settings.xml, и они расположены в двох местах: +
-Каталог где установлен Maven: $M2_Home/conf/settings.xml +
-Домашняя директория пользователя: ${user.home}/.m2/settings.xml+
  
-Что такое жизненный цикл сборки в Maven? +===== Назовите основные фазы жизненного цикла сборки Maven? =====
-Жизненный цикл сборки(Lifecycle) - это чётко опредлённая последовательность фаз во время выполнения которых должын быть достигнуты определённые цели. Здесь фаза представляет собой стадию жизненного цикла.+
  
-Назовите основные фазы жизненного цикла сборки Maven? 
 Когда Maven начинает сборку проекта, он проходит через определённую последовательность фаз сборки, и выполняет определенные задачи, которые указаны в каждой из фаз. Когда Maven начинает сборку проекта, он проходит через определённую последовательность фаз сборки, и выполняет определенные задачи, которые указаны в каждой из фаз.
-В Maven есть следующие 3 стандартных жизненных цикла: 
-Очистка (clean) - очищает артефакты, созданные до сборки. 
-Сборка (default or build) - используется для создания приложения. 
-Создание сайта проекта (site) - генерирует документацию сайта для проекта. 
  
-Что делает команда mvn site? +В Maven есть следующие три стандартных жизненных цикла: 
-mvn site - создает веб-сайт проекта.+  * **Очистка (clean)** - очищает артефакты, созданные до сборки. 
 +  * **Сборка (default or build)** используется для создания приложения. 
 +  * **Создание сайта проекта (site)** генерирует документацию сайта для проекта.
  
-Что делает команда mvn clean? +===== Что делает команда mvn site? ===== 
-mvn clean эта команда очищает целевую директорию от созданных в процессе сборки файлов.+ 
 +<code bash>mvn site</code> создает веб-сайт проекта. 
 + 
 +===== Что делает команда mvn clean? ===== 
 + 
 +<code bash>mvn clean</code> эта команда очищает целевую директорию от созданных в процессе сборки файлов.
  
 ===== Из каких фаз состоит жизненный цикл сборки Clean? ===== ===== Из каких фаз состоит жизненный цикл сборки Clean? =====
Line 171: Line 233:
   * **post-integration-test** - выполняет действия, необходимые  после выполнения интеграционных тестов. Например, освобождение ресурсов.   * **post-integration-test** - выполняет действия, необходимые  после выполнения интеграционных тестов. Например, освобождение ресурсов.
   * **verify** - выполняет любые проверки для подтверждения того, что пакет пригоден и отвечает критериям качества.   * **verify** - выполняет любые проверки для подтверждения того, что пакет пригоден и отвечает критериям качества.
-  * **install** - переносит пакет в локальный репозиторий, откуда он будет доступен для использования как зависимость в других проектах. +  * **install** - переносит пакет в локальный репозитарий, откуда он будет доступен для использования как зависимость в других проектах. 
-  * **deploy** - копирует финальный пакет (архив) в удалённый репозиторий для, того, чтобы сделать его доступным другим разработчикам и проектам.+  * **deploy** - копирует финальный пакет (архив) в удалённый репозитарий для, того, чтобы сделать его доступным другим разработчикам и проектам.
  
 Здесь также необходимо уточнить два момента: Здесь также необходимо уточнить два момента:
Line 192: Line 254:
 <code bash>mvn clean dependency:copy-dependencies package</code>  <code bash>mvn clean dependency:copy-dependencies package</code> 
  
-Аргументы ''clean'' и ''package'' являются фазами сборки до тех пор, пока "''dependency:copy-dependencies''" является задачей. В этом случае, сначала будет выполнена фаза clean, после этого будет выполнена задача "''dependency:copy-dependencies''". После чего будет выполнена фаза ''package''.+Аргументы ''clean'' и ''package'' являются фазами сборки, в то время как "''dependency:copy-dependencies''" является задачей.  
 + 
 +В этом случае, сначала будет выполнена фаза clean, после этого будет выполнена задача "''dependency:copy-dependencies''". После чего будет выполнена фаза ''package''.
  
 ===== Что такое профиль сборки (Build Profile)? ===== ===== Что такое профиль сборки (Build Profile)? =====
Line 236: Line 300:
 ===== Когда Maven использует внешние зависимости? ===== ===== Когда Maven использует внешние зависимости? =====
  
-Если необходимые файлы не найдены ни в центральном, ни на удалённом репозитории, тогда для решения этой проблемы используются внешние зависимости.+Если необходимые файлы не найдены ни в центральном, ни на удалённом репозитарии, тогда для решения этой проблемы используются внешние зависимости.
  
 ===== Что нужно определить для внешней зависимости? ===== ===== Что нужно определить для внешней зависимости? =====
Line 253: Line 317:
 ===== Что такое SNAPSHOT в Maven? ===== ===== Что такое SNAPSHOT в Maven? =====
  
-<wrap em>SNAPSHOT</wrap> - это специальная версия, которая показывает текущую рабочую копию. При каждой сборке Maven проверяет наличие новой **snapshot** версии на удалённом репозитории.+<wrap em>SNAPSHOT</wrap> - это специальная версия, которая показывает текущую рабочую копию. При каждой сборке Maven проверяет наличие новой **snapshot** версии на удалённом репозитарии.
  
 ===== В чем разница между snapshot и версией? ===== ===== В чем разница между snapshot и версией? =====
  
-В случае с **обычной версией**, если Maven однажды загрузил версию ''data-service:1.0'', то он больше не будет пытаться загрузить новую версию 1.0 из репозитория. Для того, чтобы скачать обновлённый продукт ''data-service'' должен быть обновлён до версии 1.1.+В случае с **обычной версией**, если Maven однажды загрузил версию ''data-service:1.0'', то он больше не будет пытаться загрузить новую версию 1.0 из репозитария. Для того, чтобы скачать обновлённый продукт ''data-service'' должен быть обновлён до версии 1.1.
  
 В случае со **snapshot**, Maven автоматически будет подтягивать крайний snapshot (''data-service:1.0-SNAPSHOT'') каждый раз, когда будет выполнятся сборка проекта. В случае со **snapshot**, Maven автоматически будет подтягивать крайний snapshot (''data-service:1.0-SNAPSHOT'') каждый раз, когда будет выполнятся сборка проекта.
Line 276: Line 340:
   * **runtime** - эта область указывает на то, что зависимость не обязательна для ''compilation'', но для фаз выполнения.    * **runtime** - эта область указывает на то, что зависимость не обязательна для ''compilation'', но для фаз выполнения. 
   * **test** - эта область указывает, что зависимость не обязательна для нормального использования приложения.   * **test** - эта область указывает, что зависимость не обязательна для нормального использования приложения.
-  * **system** - эта область похожа на ''provided'' за исключением того, что вы предоставляете JAR. Артефакт всегда доступен и не смотрит в репозиторий.+  * **system** - эта область похожа на ''provided'' за исключением того, что вы предоставляете JAR. Артефакт всегда доступен и не смотрит в репозитарий.
   * **import** - эта область используется в зависимости типа ''pom'' в ''<dependencyManagement>'' разделе. Это указывает на то, что определенный POM будет заменен зависимостями в этом POM ''<dependencyManagement>'' разделе.   * **import** - эта область используется в зависимости типа ''pom'' в ''<dependencyManagement>'' разделе. Это указывает на то, что определенный POM будет заменен зависимостями в этом POM ''<dependencyManagement>'' разделе.
  
Line 310: Line 374:
 ===== При сборке проекта Maven постоянно проверяет наличие обновлений в интернете. Можете ли вы собрать проект без интернета? ===== ===== При сборке проекта Maven постоянно проверяет наличие обновлений в интернете. Можете ли вы собрать проект без интернета? =====
  
-Да, можете, если в вашем локальном репозитории есть все необходимые для сборки артефакты.+Да, можете, если в вашем локальном репозитарии есть все необходимые для сборки артефакты.
  
 ===== Если при сборке проекта в тестах произошла ошибка, как собрать проект без запуска тестов? ===== ===== Если при сборке проекта в тестах произошла ошибка, как собрать проект без запуска тестов? =====
Line 339: Line 403:
   * **description** - элемент представляет собой общее описание проекта. Это часто используется в генерации документации Maven   * **description** - элемент представляет собой общее описание проекта. Это часто используется в генерации документации Maven
   * **url** - интернет-страница проекта   * **url** - интернет-страница проекта
-  * **repositories** - репозитории для артефактов +  * **repositories** - репозитарии для артефактов 
-  * **pluginRepositories** - репозитории для плагинов Maven+  * **pluginRepositories** - репозитарии для плагинов Maven
  
 <note>Эта страница содержит переработанные и откорректированные материалы с  [[https://jsehelper.blogspot.com/2016/05/maven-1.html]]</note> <note>Эта страница содержит переработанные и откорректированные материалы с  [[https://jsehelper.blogspot.com/2016/05/maven-1.html]]</note>
notes/java/maven.1544793287.txt.gz · Last modified: 2018/12/14 16:14 by kibi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki