Установка Apache Maven на AlmaLinux 8

Apache Maven — это инструмент управления проектом и сборки для экосистемы Java. Он использует декларативную модель проекта (POM — Project Object Model) для описания структуры проекта, зависимостей и жизненного цикла сборки. POM выполняет роль единого компактного файла конфигурации, который заменяет устаревшие Makefile-подходы и упрощает воспроизводимость окружения на разных машинах.
Коротко о сути: Maven хранит метаданные проекта и зависимости в XML-файле (pom.xml). Это облегчает автоматическое управление зависимостями, воспроизводимые сборки и интеграцию в CI/CD-процессы.
Зачем использовать Maven
- Конвенция поверх конфигурации: стандартные пути и lifecycle упрощают работу.
- Централизованное управление зависимостями и репозиториями.
- Повторяемые сборки на разных машинах и в CI.
- Широкая экосистема плагинов (компиляция, тестирование, упаковка, деплой).
Важно: Maven сам по себе — Java-приложение, поэтому прежде чем устанавливать Maven, нужно обеспечить наличие совместимой Java (JDK).
Что потребуется перед началом
- Сервер с AlmaLinux 8.
- Доступ root или sudo.
- Доступ в интернет для загрузки пакетов или архива Maven.
Критерии приёмки
- Команда mvn -version возвращает установленную версию Maven и корректную ссылку на JAVA_HOME.
- mvn clean package успешно собирает тестовый проект без ошибок зависимостей.
- Среда доступна не только для root (mvn доступен для пользователей с корректным PATH).
Обновление системы
Важно сначала обновить систему, чтобы устранить уязвимости и обновить зависимости.
sudo dnf update -y
sudo dnf upgrade -yПримечание: на серверах с длительным жизненным циклом обновления выполняйте планово и тестируйте в staging перед production.
Установка Java (JDK)
Maven требует установленного JDK. На AlmaLinux удобно использовать OpenJDK 11 как стабильный и широко используемый вариант.
sudo dnf install java-11-openjdk-devel -yПроверьте установку:
java -versionОжидаемый результат: вывод с информацией о версии Java, например OpenJDK 11 или выше. Если у вас несколько JDK, убедитесь, что JAVA_HOME указывает на нужную версию.
Быстрая установка Maven через dnf
Это самый простой метод: пакет Maven уже присутствует в репозиториях AlmaLinux. Недостаток: версия может быть старее актуальной.
sudo dnf install maven -yПроверка:
mvn -version
Если версия в репозитории вам подходит, это оптимальный путь для быстрого начала.
Установка Apache Maven из официального архива (последняя версия)
Установка из архива полезна, когда нужна конкретно более новая версия Maven, чем доступна в репозитории.
- Скачайте официальный архив (замените ссылку на актуальную версию при необходимости):
wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz- Распакуйте архив в /opt и создайте символьную ссылку для удобства обновления:
sudo tar -xvf apache-maven-3.8.3-bin.tar.gz -C /opt
sudo ln -s /opt/apache-maven-3.8.3 /opt/maven- Добавьте переменные окружения в системный профиль:
sudo nano /etc/profile.d/maven.shВставьте в файл:
export JAVA_HOME=/usr/lib/jvm/jre-openjdk
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}Сделайте скрипт исполняемым и подгрузите его в текущую сессию:
sudo chmod +x /etc/profile.d/maven.sh && source /etc/profile.d/maven.shПроверьте установку:
mvn -versionЕсли всё настроено верно, вы увидите строку с версией Apache Maven (например, 3.8.3) и путь к используемой Java.
Совет: при обновлении Maven распакуйте новую версию в /opt и обновите символьную ссылку /opt/maven, затем перезапустите сессии пользователей.
Проверка функциональности (тестовый проект)
Создайте минимальный Maven-проект и соберите его, чтобы убедиться, что всё работает:
mvn archetype:generate -DgroupId=com.example -DartifactId=test-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd test-app
mvn clean packageОжидаемый результат: успешная сборка и создание JAR/target каталога.
Частые ошибки и способы их устранения
- mvn: команда не найдена
- Причина: PATH не содержит путь к Maven или профиль не загружен.
- Решение: проверьте /etc/profile.d/maven.sh, выполните source /etc/profile.d/maven.sh и откройте новую сессию.
- Неверный JAVA_HOME или несовместимая версия Java
- Причина: Maven использует системный JAVA_HOME, который указывает на JRE без инструментов разработки.
- Решение: укажите путь на JDK (например /usr/lib/jvm/java-11-openjdk) в /etc/profile.d/maven.sh.
- Ошибки загрузки зависимостей (502/401/timeout)
- Причина: сеть, прокси или закрытые репозитории.
- Решение: настройте proxy в ~/.m2/settings.xml или в системных настройках; убедитесь в доступности https://repo.maven.apache.org.
- Проблемы с правами при установке в /opt
- Решение: для системных инсталляций используйте sudo; для локальных разработчиков можно установить Maven в домашний каталог и добавить PATH в ~/.bashrc.
Дополнительные подходы и альтернативы
- Установка через SDKMAN! — удобно для управления несколькими версиями Maven и JDK одновременно. Пример:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install maven 3.8.3- Пакетные менеджеры типа Homebrew on Linux (brew install maven) — удобно на рабочих станциях, но менее распространено на серверах.
Проверка целостности и безопасность загрузки
Рекомендуется при установке из архива сверять контрольные суммы и подписи (если доступны) на официальном сайте Apache. Примерный порядок действий:
- Скачать файлы sha512/sha256 и .asc из официального зеркала.
- Проверить контрольную сумму через sha512sum.
- Проверить подпись через gpg (потребуется ключ разработчика Apache).
Эти шаги повышают уверенность в том, что архив не был подменён.
Рекомендации по безопасности и эксплуатации
- Не используйте root-пользователя для повседневной разработки. Устанавливайте Maven в /opt, но работайте под ненадёжным пользователем.
- Ограничьте доступ к системным профилям и скриптам, содержащим переменные окружения.
- При использовании прокси — удостоверяйтесь, что credentials хранятся безопасно (не в открытом виде в репозитории).
Интеграция в CI/CD и советы по автоматизации
Мини-методология: добавление Maven в CI-пайплайн
- На CI-агенте установите JDK и Maven (или используйте контейнер/образ с предустановленным окружением).
- Кешируйте локальный Maven-репозиторий (~/.m2/repository) между сборками для ускорения.
- Добавьте шаги:
- mvn -B -ntp -DskipTests clean package
- mvn test (отдельный шаг)
- Артефакты публикуйте в Nexus/Artifactory или в облачный репозиторий.
Совет: используйте опции -B (batch) и -DskipTests для ускорения автоматических сборок при необходимости.
Таблица совместимости и миграции
- Maven 3.x совместим с подавляющим большинством современных плагинов. При переходе с очень старых версий (2.x) проверьте плагины и структуры POM.
- Java: Maven как приложение работает на Java 7+, но плагины и ваши проекты могут требовать конкретной версии JDK (8/11/17 и т.д.). Всегда проверяйте специфику плагинов.
Роли — что должен сделать каждый
Разработчик:
- Проверить mvn -version и собрать локально проект.
- Добавить .mvn/extensions.xml при необходимости специальных расширений.
DevOps/Системный администратор:
- Установить Maven на CI-агенты и серверы сборки.
- Настроить кеширование репозитория и прокси (если требуется).
- Контролировать обновления и управлять символьными ссылками в /opt.
QA:
- Запустить полную сборку и тесты в CI.
- Проверить отчёты Surefire и Failures на предмет нестабильных тестов.
Часто встречающиеся вопросы (коротко)
- Нужен ли JDK или достаточно JRE? — Для сборки требуется JDK (javac и инструменты сборки).
- Можно ли иметь несколько версий Maven? — Да, используя символьные ссылки, SDKMAN или контейнеры.
Критерии приёмки (повторно)
- mvn -version отображает корректную версию и JAVA_HOME.
- mvn clean package успешно проходит для тестового приложения.
- CI-пайплайн использует ту же версию Maven, что и локальная разработка, либо задокументировано отличие.
Заключение
Мы рассмотрели быстрый путь установки Maven через dnf и более контрольный путь установки из официального архива. Оба подхода рабочие: выбор зависит от требований к версии и политике поддержки в вашей организации. Рекомендуется поддерживать документацию по версии Maven и JDK в репозитории проекта, а также настраивать проверку целостности при установке из интернета.
Важно: делитесь руководством с командой, проверяйте совместимость плагинов при обновлении Maven и используйте кеширование в CI для ускорения сборок.
Полезные команды для быстрого доступа:
# Проверить Java
java -version
# Проверить Maven
mvn -version
# Собрать проект
mvn clean packageЕсли у вас остались вопросы или возникли ошибки на конкретном шаге — опишите окружение, вывод mvn -version и ошибки сборки, и это ускорит поиск решения.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента