Что конкретно делает mvn в maven?


165

Я только начал использовать Maven, и мне сказали сделать это mvn installв определенном каталоге.

Что именно делает mvn install?

Я думаю, что он ищет pom.xmlв текущей папке и начинает следовать инструкциям, указанным в этом файле. Это правильно?


Ответы:


124

Как вы, возможно, знаете, Maven - это инструмент автоматизации сборки, предоставляемый Apache, который делает больше, чем просто управление зависимостями. Мы можем сделать его равным Ant и Makefile, который загружает все необходимые зависимости.

На нем mvn installон создает дерево зависимостей на основе конфигурации проекта для pom.xmlвсех подпроектов в супер pom.xml(корневое POM) и загружает / компилирует все необходимые компоненты в каталог, который называется .m2в папке пользователя. Эти зависимости должны быть разрешены для создания проекта без каких-либо ошибок, и mvn installэто одна из утилит, которая может загрузить большинство зависимостей.

Кроме того, в Maven есть и другие утилиты, dependency:resolveкоторые можно использовать отдельно в любых конкретных случаях. Жизненный цикл сборки mvn выглядит следующим образом: Привязки LifeCycle

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

Этап тестирования этого mvn можно игнорировать, используя флаг -DskipTests=true.


9
Просто примечание: если вы хотите пропустить все цели, связанные с тестом, используйте: -Dmaven.test.skip = true (вместо -DskipTests = true)
Манодж Шреста

1
Этот ответ не проясняет, что команда install в конечном итоге устанавливает артефакт локально, то есть в локальном хранилище.
ПериЧандра

34

Вы смотрели какие-нибудь документы Maven, например, документы по установке плагинов maven ?

В двух словах: он соберет проект и установит его в ваш локальный репозиторий.


Допустим, вы запускаете «mvn install» в библиотеке с открытым исходным кодом. Затем вы запускаете «mvn install» в проекте, который использует библиотеку с открытым исходным кодом, которую мы сначала скомпилировали. При запуске "mvn install", будут ли сначала искать JAR-файлы в локальном репо? Или это зависит от файла POM?
Кевин Мередит

1
@Kevin Сначала он должен быть локальным, так как в этом суть. Если его нет в локальном репозитории, он будет искать в любых репозиториях, которые вы настроили (или по умолчанию), и установить его в локальный репозиторий, если он найден. Я подозреваю, что вы можете настроить его так, чтобы он всегда пропускал локальный репозиторий, хотя я не знаю, как без его поиска.
Дэйв Ньютон,

17
У вас смотрел на канонические документы для Maven? Сайт Apache объясняет цель установки mvn следующим образом: «В большинстве случаев цель install: install не требует настройки, для этого нужно установить POM проекта и файл артефакта на этапе установки жизненного цикла сборки по умолчанию». Это потому, что документ Apache не объясняет, что на самом деле делает «mvn install», люди, которым нравится постер, и я, ищут ответ. Совершенно резонный вопрос.
Bethesdaboys


6

install:installЦель обеспечивается «Apache Maven Установить плагин»:

Apache Maven Установить плагин

Плагин установки используется на этапе установки для добавления артефактов в локальный репозиторий. Установить плагин использует информацию в POM ( groupId, artifactId, version) , чтобы определить правильное место для артефакта в локальном хранилище.

Локальный репозиторий - это локальный кеш, в котором хранятся все артефакты, необходимые для сборки. По умолчанию он находится в домашнем каталоге пользователя ( ~/.m2/repository), но его можно настроить с ~/.m2/settings.xmlпомощью <localRepository>элемента.

- Apache Maven Install Plugin - Введение .

Сказав это, точная цель цели:

install:install используется для автоматической установки основного артефакта проекта (JAR, WAR или EAR), его POM и любых прикрепленных артефактов (источников, javadoc и т. д.), созданных конкретным проектом.

- Apache Maven Install Plugin - Введение .

Дополнительные сведения о цели см. На странице установки плагина Apache Maven - установка: установка .

Дополнительные сведения о жизненном цикле сборки в целом и о том, какое место занимает цель в жизненном цикле сборки, см. На странице Maven - Введение в жизненный цикл сборки .


3

Короткий ответ

установить MVN

  • добавляет все артефакты (зависимости), указанные в pom , в локальный репозиторий (из удаленных источников).

2

-DskipTests=true это короткая форма -Dmaven.test.skip=true

Внесите изменения в файл Setting.xml в папке .m2 . Вы можете использовать ссылку на локальный репозиторий, чтобы загруженные банки не загружались снова и снова.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

0

Основные задачи установки mvn : 1) Загрузите зависимости и 2) Создайте проект

в то время как задание 1 в настоящее время заботится об идентификаторах, таких как intellij (они загружаются для любой зависимости в POM)

Установка mvn в основном сейчас используется для задания 2 .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.