В чем разница между "mvn deploy" для локального репозитория и "mvn install"? - PullRequest
85 голосов
/ 16 октября 2008

Моя команда использует внутреннее репозиторий Maven Team, который используется совместно с сервером разработки с использованием Apache. Мы также запускаем сервер Continuum CI на той же машине. Сборки Maven в Continuum выполняются с целью «установить», которая копирует конечный артефакт непосредственно в общий каталог.

Вопрос в том, в чем разница между добавлением файлов в общий репозиторий с использованием mvn install и использованием цели развертывания (плагин mvn-deploy)?

Мне кажется, что использование mvn deploy создает дополнительные трудности с настройкой, но я где-то читал, что установка файлов в общий репозиторий является плохой идеей по некоторым причинам, связанным с внутренней работой maven.

обновление: я получаю функциональные различия между развертыванием и установкой; На самом деле меня больше интересует информация низкого уровня с точки зрения того, какие файлы создаются в репозитории Maven.

Ответы [ 3 ]

152 голосов
/ 29 марта 2009

Кен, хороший вопрос. В Подробном руководстве я должен быть более ясным о разнице. «install» и «deploy» служат двум различным целям в сборке. «установить» относится к процессу установки артефакта в вашем локальном хранилище. «развертывание» относится к процессу развертывания артефакта в удаленном хранилище.

Пример:

  1. Когда я запускаю большой многомодульный проект на моей машине, я обычно запускаю "mvn install". Это позволит установить все сгенерированные двоичные программные артефакты (обычно JAR) в моем локальном хранилище. Затем, когда я собираю отдельные модули в сборке, Maven собирается извлечь зависимости из локального репозитория.

  2. Когда придет время развертывать моментальные снимки или выпуски, я собираюсь запустить «mvn deploy». Запуск этого будет пытаться развернуть файлы в удаленном хранилище или на сервере. Обычно я собираюсь развертывать в менеджере хранилища, например Nexus

Это правда, что запуск "deploy" потребует некоторой дополнительной настройки, вы должны будете предоставить раздел distributionManagement в вашем POM.

15 голосов
/ 16 октября 2008

Из документов Maven звучит так, как будто это просто разница в , в хранилище которого вы устанавливаете пакет:

  • install - установить пакет в локальный репозиторий, для локального использования в качестве зависимости в других проектах
  • deploy - выполняется в среде интеграции или выпуска, копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.

Может быть, есть некоторая путаница в том, что «установка» на CI-сервер устанавливает его в локальный репозиторий, которым вы, как пользователь, делитесь?

3 голосов
/ 17 октября 2008

«matt b» правильно, но, если быть точным, цель «install» копирует вашу встроенную цель в локальный репозиторий в вашей файловой системе; полезно для небольших изменений в проектах, не предназначенных для полной группы.

Цель "развертывания" загружает ее в общий репозиторий, когда ваша работа завершена, и затем может быть передана другим людям, которым это требуется для их проекта.

В вашем случае кажется, что «установка» используется для упрощения управления развертыванием, поскольку локальное репозиторий CI является общим репо. Если бы CI был на другом боксе, ему пришлось бы использовать цель «развертывания».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...