Що саме робить mvn у Maven


165

Я щойно почав використовувати Maven, і мені сказали робити mvn installв певному каталозі.

Що саме робить mvn install?

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


Відповіді:


124

Як вам може бути відомо, Maven - це інструмент автоматизації побудови, який надає Apache, і це більше, ніж управління залежностями. Ми можемо зробити це у ролі Ant та Makefile, який завантажує всі необхідні залежності.

У режимі a 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)
Маной Шрестха

Ця відповідь не дозволяє уточнити, що команда install в кінцевому рахунку встановлює артефакт локально, тобто в локальному сховищі.
PeriChandra

34

Чи переглядали ви будь-який із документів Maven, наприклад, Maven install docs ?

Версія горішкової оболонки: вона створить проект та встановить його у вашому локальному сховищі.


Скажімо, ви запускаєте "mvn install" у бібліотеці з відкритим кодом. Потім ви запускаєте "mvn install" на проект, який використовує бібліотеку з відкритим кодом, яку ми вперше склали. Під час запуску "mvn install" спочатку JARs будуть шукати місцеве репо? Або це залежить від файлу POM?
Кевін Мередіт

1
@Kevin Перш за все, це має бути місцевим, оскільки це суть справи. Якщо його немає в локальному сховищі, він буде шукати в будь-яких сховищах, які ви налаштували (або за замовчуванням), і встановить його у ваше місцеве репортаж, якщо воно знайдено. Я підозрюю, що ви могли налаштувати його на те, щоб завжди пропускати місцеве репо, хоча я не знаю, як це не шукати.
Дейв Ньютон

17
У вас дивився на канонічні документи для Maven? Сайт Apache пояснює мету встановлення mvn таким чином: "У більшості випадків мета установки: установка не потребує ніякої конфігурації; їй потрібно встановити POM проекту та файл артефакту під час фази встановлення життєвого циклу збірки за замовчуванням." Це тому, що документ Apache не в змозі пояснити, що насправді "mvn install" робить те, що людям подобається плакат, і я шукаю відповідь. Ідеально розумне питання.
bethesdaboys


6

install:installМета забезпечується «Apache Maven Встановити плагін»:

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

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

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

- Вбудований модуль Apache Maven - Вступ .

Сказавши це, точна мета:

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

- Вбудований модуль Apache Maven - Вступ .

Для отримання додаткових відомостей про ціль, зверніться до сторінки Apache Maven Install Plugin - install: install .

Для отримання додаткової інформації про життєвий цикл побудови взагалі та про те, яке місце має ціль у життєвому циклі збірки, зверніться до сторінки Maven - Вступ до життєвого циклу побудови .


3

Коротка відповідь

mvn встановити

  • додає всі артефакти (залежності), вказані в пом , до локального сховища (з віддалених джерел).

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 install в основному використовується для роботи 2 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.