В чем разница между «mvn deploy» и локальным репо и «mvn install»?

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

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

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

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

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

Пример:

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

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

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

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

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

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

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

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

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

  • Извлечь версию из maven pom.xml в код
  • Укажите системное свойство для проекта Maven
  • Есть ли простой способ удалить неиспользуемые зависимости из maven pom.xml?
  • Как прочитать файл внешних свойств в Maven
  • Модули Maven + Создание единого конкретного модуля
  • Создание исполняемого банку с maven?
  • Управление зависимостями DLL с Maven
  • Ошибка «Unmappable character for encoding UTF-8»
  • Как исключить модуль из сборки реактора Maven?
  • Ресурс из src / main / ресурсов не найден после сборки с maven
  • Различные зависимости для разных профилей сборки
  • Давайте будем гением компьютера.