← Назад к вопросам

Что делает команда deploy в maven?

1.2 Junior🔥 171 комментариев
#Docker, Kubernetes и DevOps#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Maven Deploy: команда развёртывания артефактов

Команда mvn deploy в Maven публикует собранный артефакт (JAR, WAR, etc.) на удалённый репозиторий. Это критический инструмент для распространения библиотек и компонентов.

1. Основное действие

mvn deploy

Выполняет полный жизненный цикл до deploy:

  • validate (проверка)
  • compile (компиляция)
  • test (тестирование)
  • package (упаковка)
  • verify (проверка)
  • install (локальный репозиторий)
  • deploy (удалённый репозиторий)

2. Что загружается

  • my-library-1.0.0.jar (скомпилированный архив)
  • my-library-1.0.0.pom (дескриптор проекта)
  • my-library-1.0.0-sources.jar (исходный код)
  • my-library-1.0.0-javadoc.jar (документация)
  • checksum файлы (md5, sha1, sha256)

3. Конфигурация в pom.xml

<distributionManagement>
  <repository>
    <id>releases</id>
    <url>https://repo.example.com/repository/releases</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <url>https://repo.example.com/repository/snapshots</url>
  </snapshotRepository>
</distributionManagement>

4. Аутентификация в settings.xml

<servers>
  <server>
    <id>releases</id>
    <username>your-username</username>
    <password>your-password</password>
  </server>
  <server>
    <id>snapshots</id>
    <username>your-username</username>
    <password>your-password</password>
  </server>
</servers>

5. Release vs Snapshot версии

  • 1.0.0 (release) - стабильная, в репозитории releases, не перезаписывается
  • 1.0.0-SNAPSHOT (snapshot) - разработочная, в репозитории snapshots, может перезаписываться

6. Типичные используемые репозитории

  • Maven Central Repository (публичный)
  • Nexus Repository Manager (корпоративный)
  • JFrog Artifactory (облачный)
  • GitHub Packages

7. Отличие от install

  • mvn install - загружает в локальный репозиторий (~/.m2/repository)
  • mvn deploy - загружает на удалённый репозиторий (Nexus, Artifactory, etc.)

8. Процесс при успешном deploy

[INFO] Building jar: /path/to/my-library-1.0.0.jar
[INFO] --- maven-deploy-plugin:2.8.2:deploy ---
[INFO] Uploading: my-library-1.0.0.jar
[INFO] Uploaded: my-library-1.0.0.jar
[INFO] Uploading: my-library-1.0.0.pom
[INFO] Uploaded: my-library-1.0.0.pom
[INFO] BUILD SUCCESS

9. Управление версиями и release

mvn release:prepare   # Подготовить release
mvn release:perform   # Выполнить (включает deploy)

Это автоматически:

  • Проверяет нет ли uncommitted изменений
  • Увеличивает версию
  • Создаёт tag в системе контроля версий
  • Выполняет deploy

10. Частые ошибки

  • No distributionManagement element found - репозиторий не определён в pom.xml
  • 401 Unauthorized - неверные credentials в settings.xml
  • 403 Forbidden - попытка перезаписать release версию
  • BUILD FAILURE - тесты не прошли, deploy не выполнится

Вывод: mvn deploy публикует артефакты на удалённый репозиторий для распространения библиотек в команде или публичных хранилищах. Требует конфигурации репозитория и аутентификации.