В чем разница между "mvn deploy" и локальным репо и "mvn install"?
Моя команда использует внутреннюю команду maven repo, которая используется совместно с сервером разработки с использованием Apache. Мы также запускаем Continuum CI-сервер на той же машине. Maven в Continuum запускается с целью "установить", которая копирует финальный артефакт непосредственно в общий каталог.
Вопрос в том, в чем разница между добавлением файлов в общий репо с использованием установки mvn и использованием цели развертывания (плагин mvn-deploy)?
Мне кажется, что использование mvn deploy создает дополнительные проблемы с настройкой, но я где-то читал, что установка файлов в общий репо - это плохая идея по какой-то причине, связанная с внутренней работой maven.
update: я получаю функциональные различия между установкой и установкой; Я больше интересуюсь деталями низкого уровня с точки зрения того, какие файлы создаются в maven-репо.
Ответы
Ответ 1
Кен, хороший вопрос. Я должен быть более явным в The Definitive Guide о различии. "установить" и "развернуть" выполняют две разные задачи в сборке. "install" относится к процессу установки артефакта в вашем локальном репозитории. "deploy" относится к процессу развертывания артефакта в удаленном репозитории.
Пример:
-
Когда я запускаю большой многомодульный проект на моей машине, я обычно запускаю "mvn install". Это собирается установить все созданные двоичные программные артефакты (обычно JAR) в моем локальном репозитории. Затем, когда я строю отдельные модули в сборке, Maven будет извлекать зависимости из локального репозитория.
-
Когда придет время для развертывания снимков или выпусков, я собираюсь запустить "mvn deploy". Выполнение этого будет пытаться развернуть файлы в удаленный репозиторий или сервер. Обычно я собираюсь развертываться в менеджере репозитория, например Nexus
Правда, для запуска "развертывания" потребуется некоторая дополнительная конфигурация, вам нужно будет предоставить раздел distributionManagement в вашем POM.
Ответ 2
Из документов Maven, похоже, что это просто разница в том, в каком репозитории вы устанавливаете пакет:
- install - установить пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально.
- deploy - выполняется в среде интеграции или выпуска, копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.
Возможно, есть некоторая путаница в том, что "установить" на сервер CI устанавливает его в локальный репозиторий, который затем вы как пользователь делитесь?
Ответ 3
"матовый b" имеет это право, но, если быть конкретным, цель "установить" копирует вашу созданную цель в локальный репозиторий в вашей файловой системе; полезно для небольших изменений в проектах, которые в настоящее время не предназначены для полной группы.
Цель "развернуть" загружает его в общий репозиторий для завершения вашей работы, а затем может быть предоставлена другим людям, которые нуждаются в этом для своего проекта.
В вашем случае кажется, что "install" используется для упрощения управления развертыванием, поскольку локальное репо CI является общим репо. Если CI был на другом поле, он должен был бы использовать цель "развернуть".