В чем разница между развертыванием mvn в локальном репо и установкой mvn?

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

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

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

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


person Ken Liu    schedule 16.10.2008    source источник


Ответы (3)


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

Пример:

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

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

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

person Tim O'Brien    schedule 29.03.2009
comment
@ Тим, так в чем же преимущество mvn deploy? Какие преимущества дает дополнительная конфигурация, которая требовалась в первую очередь? - person Geek; 30.12.2013
comment
Развертывание предназначено для развертывания артефактов на удаленном сервере. Это совершенно другой вариант использования, нежели install. - person Tim O'Brien; 15.01.2014

Судя по документации Maven, это просто разница в какой репозиторий вы устанавливаете пакет:

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

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

person matt b    schedule 16.10.2008

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

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

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

person Spencer Kormos    schedule 16.10.2008