Что сохраняет команда `mvn install` в локальном репозитории Maven?

«Что сохраняет команда `mvn install` в локальном репозитории Maven?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда mvn install выполняет фазу install жизненного цикла Maven. Ее основная цель — установить собранный артефакт проекта (и его POM) в локальный репозиторий (по умолчанию ~/.m2/repository/), сделав его доступным для других проектов на этой машине.

Что именно сохраняется:

  1. Основной артефакт: Скомпилированный JAR, WAR, POM или другой упакованный файл.
  2. POM-файл проекта: pom.xml, преобразованный в artifactId-version.pom.
  3. Метаданные: Файлы типа _maven.repositories или _remote.repositories, указывающие источник артефакта.

Структура после mvn install для артефакта com.example:my-app:1.0:

~/.m2/repository/
└── com/
    └── example/
        └── my-app/
            └── 1.0/
                ├── my-app-1.0.jar      # Основной артефакт
                ├── my-app-1.0.pom      # POM-файл
                └── _remote.repositories # Метаданные

Важные уточнения:

  • Исходники и JavaDoc: Файлы -sources.jar и -javadoc.jar не генерируются и не устанавливаются автоматически. Для их создания и установки необходимо подключить и настроить плагины maven-source-plugin и maven-javadoc-plugin.
  • Локальный кэш: Локальный репозиторий также действует как кэш для зависимостей, загруженных из удаленных репозиториев.
  • Следующий шаг: После install артефакт можно развернуть в удаленный репозиторий (Nexus, Artifactory) с помощью фазы deploy (mvn deploy).