Apache Maven — это инструмент для управления сборкой Java-проектов, управления зависимостями и документацией. Он используется для автоматизации компиляции, тестирования и упаковки Java-приложений. В Debian Maven можно установить из стандартных репозиториев (проще, но версия старше) или вручную из бинарного архива (актуальная версия с проверкой подписи). Главные сложности для новичка: Maven требует установленный JDK (Java Development Kit), а при ручной установке нужно правильно настроить переменные окружения (M2_HOME и PATH). Также важно понимать, что в разных версиях Debian разные версии Maven и Java (Debian 13 — Maven 3.9.9 + Java 21, Debian 12 — Maven 3.8.7 + Java 17, Debian 11 — Maven 3.6.3 + Java 11).
💡 В этом руководстве вы установите Apache Maven на Debian двумя способами: через APT (рекомендованный для большинства) и ручной установкой (если нужна самая свежая версия с проверкой SHA512 и GPG). Вы также узнаете, как проверить установку на тестовом проекте, настроить прокси и решить типичные проблемы.
В этой статье вы узнаете:
- Как установить Maven через APT (рекомендовано)
- Как установить Maven вручную из бинарного архива (актуальная версия с проверкой подписи)
- Как настроить переменные окружения (
M2_HOME,PATH) - Как создать и собрать тестовый Maven-проект
- Как настроить прокси для работы за корпоративным фаерволом
- Как решить типичные проблемы:
JAVA_HOMEне задан,mvn: command not found
Для кого: Java-разработчики, DevOps-инженеры, системные администраторы, а также все, кто собирает Java-проекты на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
sudo apt update && sudo apt upgrade -y
Что делает: Обновляет список пакетов и устанавливает последние обновления.
2. 📊 Сравнение способов установки Maven
В Debian есть два основных способа установки Maven. Вот их сравнение:
| Метод | Откуда | Версия | Обновления | Плюсы | Минусы |
|---|---|---|---|---|---|
| APT рекомендовано | Репозитории Debian | Debian 13: 3.9.9, Debian 12: 3.8.7, Debian 11: 3.6.3 | Автоматически через apt upgrade | Простота, автоматические обновления | Версии старые, особенно на Debian 11 |
| Ручная установка | Официальный сайт Apache | Последняя стабильная | Вручную (скрипт с проверкой SHA512/GPG) | Самая свежая версия, проверка подписи | Требует ручного обновления и настройки PATH |
💡 Рекомендация: Для большинства пользователей подойдёт APT. Ручную установку выбирайте, если вам нужна самая свежая версия Maven или специфическая версия, которой нет в репозиториях.
3. 📦 Способ 1: Установка Maven через APT (рекомендованный)
Этот способ подходит для большинства пользователей. Вы получаете версию Maven, протестированную для вашего выпуска Debian.
3.1 Установка Maven и JDK
sudo apt install maven default-jdk -y
Что делает: Устанавливает Maven и JDK (Java Development Kit) по умолчанию.
3.2 Проверка версии и пути
command -v mvn
mvn -version
javac -version
✅ Ожидаемый вывод в терминале (Debian 13):
/usr/bin/mvn
Apache Maven 3.9.9
Maven home: /usr/share/maven
Java version: 21.0.9, vendor: Debian, runtime: /usr/lib/jvm/java-21-openjdk-amd64
javac 21.0.9
Какие версии в разных Debian:
| Версия Debian | Версия Maven | Версия Java |
|---|---|---|
| Debian 13 (Trixie) | 3.9.9 | 21 |
| Debian 12 (Bookworm) | 3.8.7 | 17 |
| Debian 11 (Bullseye) | 3.6.3 | 11 |
4. 📦 Способ 2: Ручная установка Maven (актуальная версия)
Этот способ подходит, если вам нужна самая свежая версия Maven с проверкой SHA512 и GPG-подписи.
4.1 Установка JDK и зависимостей
sudo apt install default-jdk ca-certificates curl gpg -y
4.2 Определение последней версии и скачивание с проверкой
cd /tmp
# Определение версии с официального сайта
MAVEN_VERSION=$(curl -fsSL https://maven.apache.org/download.cgi | grep -oE 'apache-maven-[0-9]+\.[0-9]+\.[0-9]+-bin\.tar\.gz' | sed -E 's/apache-maven-([0-9.]+)-bin\.tar\.gz/\1/' | sort -Vu | tail -n 1)
if [ -z "$MAVEN_VERSION" ]; then
echo "Ошибка: не удалось определить версию Maven"
exit 1
fi
echo "Версия Maven: $MAVEN_VERSION"
# Скачивание архива, контрольной суммы и подписи
MAVEN_ARCHIVE="apache-maven-${MAVEN_VERSION}-bin.tar.gz"
curl -fsSL -o "$MAVEN_ARCHIVE" "https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_ARCHIVE}"
curl -fsSL -o "${MAVEN_ARCHIVE}.sha512" "https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_ARCHIVE}.sha512"
curl -fsSL -o "${MAVEN_ARCHIVE}.asc" "https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_ARCHIVE}.asc"
curl -fsSL -o maven-KEYS "https://downloads.apache.org/maven/KEYS"
4.3 Проверка SHA512 и GPG-подписи
# Проверка SHA512
echo "Проверка SHA512..."
if printf '%s %s\n' "$(cat "${MAVEN_ARCHIVE}.sha512")" "$MAVEN_ARCHIVE" | sha512sum -c -; then
echo "SHA512: OK"
else
echo "Ошибка: контрольная сумма не совпадает"
exit 1
fi
# Проверка GPG-подписи
echo "Проверка GPG-подписи..."
GNUPGHOME=$(mktemp -d)
export GNUPGHOME
chmod 700 "$GNUPGHOME"
if gpg --batch --import maven-KEYS && gpg --batch --verify "${MAVEN_ARCHIVE}.asc" "$MAVEN_ARCHIVE"; then
echo "GPG-подпись: OK"
rm -rf "$GNUPGHOME"
unset GNUPGHOME
else
rm -rf "$GNUPGHOME"
unset GNUPGHOME
echo "Ошибка: GPG-подпись не совпадает"
exit 1
fi
✅ Ожидаемый вывод:
apache-maven-3.9.16-bin.tar.gz: OK
gpg: Good signature from "Slawomir Jaranowski <sjaranowski@apache.org>"
4.4 Распаковка в /opt и создание символической ссылки
sudo tar xzf "$MAVEN_ARCHIVE" -C /opt/
sudo ln -sfn "/opt/apache-maven-${MAVEN_VERSION}" /opt/maven
readlink -f /opt/maven
4.5 Настройка переменных окружения
sudo tee /etc/profile.d/maven.sh >/dev/null <<'EOF'
export M2_HOME=/opt/maven
export PATH="${M2_HOME}/bin:${PATH}"
EOF
source /etc/profile
Что делает: Создаёт файл maven.sh в /etc/profile.d/, который устанавливает переменные M2_HOME и PATH для всех пользователей.
4.6 Проверка установки
command -v mvn
printf 'M2_HOME=%s\n' "$M2_HOME"
mvn -version
✅ Ожидаемый вывод:
/opt/maven/bin/mvn
M2_HOME=/opt/maven
Apache Maven 3.9.16 (...)
Java version: 21.0.9, vendor: Debian, runtime: /usr/lib/jvm/java-21-openjdk-amd64
4.7 Создание скрипта для обновления
sudo tee /usr/local/sbin/update-apache-maven >/dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
need_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
printf 'Missing required command: %s\n' "$1" >&2
exit 1
fi
}
for cmd in curl gpg sha512sum tar; do
need_cmd "$cmd"
done
if [ "$(id -u)" -ne 0 ]; then
printf 'Run this updater with sudo: sudo /usr/local/sbin/update-apache-maven\n' >&2
exit 1
fi
if [ -e /opt/maven ] && [ ! -L /opt/maven ]; then
printf '/opt/maven exists but is not a symlink; move it before updating.\n' >&2
exit 1
fi
current_version=""
if [ -x /opt/maven/bin/mvn ]; then
current_version=$(/opt/maven/bin/mvn -version | awk '/^Apache Maven / {print $3; exit}')
fi
latest_version=$(curl -fsSL https://maven.apache.org/download.cgi | grep -oE 'apache-maven-[0-9]+\.[0-9]+\.[0-9]+-bin\.tar\.gz' | sed -E 's/apache-maven-([0-9.]+)-bin\.tar\.gz/\1/' | sort -Vu | tail -n 1)
if [ -z "$latest_version" ]; then
printf 'Could not determine the current Maven 3 release.\n' >&2
exit 1
fi
if [ "$current_version" = "$latest_version" ]; then
printf 'Apache Maven %s is already installed at /opt/maven.\n' "$latest_version"
exit 0
fi
workdir=$(mktemp -d)
cleanup() { rm -rf "$workdir"; }
trap cleanup EXIT
archive="apache-maven-${latest_version}-bin.tar.gz"
base_url="https://downloads.apache.org/maven/maven-3/${latest_version}/binaries"
download_url="https://dlcdn.apache.org/maven/maven-3/${latest_version}/binaries/${archive}"
printf 'Downloading Apache Maven %s...\n' "$latest_version"
curl -fsSLo "$workdir/$archive" "$download_url"
curl -fsSLo "$workdir/${archive}.sha512" "$base_url/${archive}.sha512"
curl -fsSLo "$workdir/${archive}.asc" "$base_url/${archive}.asc"
curl -fsSLo "$workdir/maven-KEYS" "https://downloads.apache.org/maven/KEYS"
cd "$workdir"
printf 'Verifying SHA-512 checksum...\n'
printf '%s %s\n' "$(cat "${archive}.sha512")" "$archive" | sha512sum -c -
printf 'Verifying Apache release signature...\n'
GNUPGHOME="$workdir/gnupg"
export GNUPGHOME
mkdir -p "$GNUPGHOME"
chmod 700 "$GNUPGHOME"
gpg --batch --import maven-KEYS
gpg --batch --verify "${archive}.asc" "$archive"
unset GNUPGHOME
printf 'Installing Apache Maven %s under /opt...\n' "$latest_version"
tar xzf "$archive" -C /opt/
ln -sfn "/opt/apache-maven-${latest_version}" /opt/maven
/opt/maven/bin/mvn -version | head -3
printf 'Apache Maven %s is active at /opt/maven.\n' "$latest_version"
EOF
sudo chmod 755 /usr/local/sbin/update-apache-maven
Запуск обновления:
sudo /usr/local/sbin/update-apache-maven
5. 🧪 Проверка установки: тестовый проект
5.1 Создание проекта
mvn archetype:generate -DgroupId=com.example.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd my-app
5.2 Сборка проекта
mvn package
Что делает: Компилирует, тестирует и упаковывает проект в JAR-файл.
5.3 Запуск приложения
java -cp target/my-app-1.0-SNAPSHOT.jar com.example.app.App
✅ Ожидаемый вывод: Hello World!
6. ⚙️ Настройка прокси (если нужно)
Если Maven не может скачать зависимости за корпоративным прокси, настройте прокси в ~/.m2/settings.xml.
mkdir -p ~/.m2
tee ~/.m2/settings.xml > /dev/null <<EOF
<settings>
<proxies>
<proxy>
<id>corporate-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.example.com</host>
<port>8080</port>
</proxy>
</proxies>
</settings>
EOF
Замените proxy.example.com и 8080 на адрес и порт вашего прокси-сервера.
7. ⚠️ Решение типичных проблем
7.1 Ошибка: JAVA_HOME not set
Симптом: При запуске mvn появляется ошибка:
The JAVA_HOME environment variable is not defined correctly
Пошаговое решение:
Шаг 1: Найдите путь к Java:
readlink -f /usr/bin/java
Шаг 2: Установите JAVA_HOME глобально:
echo "export JAVA_HOME=/usr/lib/jvm/default-java" | sudo tee /etc/profile.d/java-home.sh
source /etc/profile
Шаг 3: Проверьте:
mvn -version
7.2 Ошибка: mvn: command not found (после ручной установки)
Симптом: mvn -version не работает.
Причина: Переменные окружения не загрузились.
Решение: Перезагрузите профиль или откройте новый терминал:
source /etc/profile
Или проверьте путь:
command -v mvn
7.3 Ошибка: Could not determine the latest Maven version
Симптом: Команда curl не может определить версию.
Решение: Установите версию вручную. Проверьте страницу релизов Maven и скачайте нужную версию:
MAVEN_VERSION=3.9.16
7.4 Ошибка: GPG signature verification failed
Симптом: При проверке GPG-подписи ошибка.
Решение: Убедитесь, что установлен пакет gpg и что ключи Apache загружены корректно. Повторите шаги из раздела 4.2–4.3.
8. 🔄 Обновление Maven
Для APT-установки
sudo apt update
sudo apt install --only-upgrade maven -y
Для ручной установки
sudo /usr/local/sbin/update-apache-maven
9. ❌ Удаление Maven
Удаление APT-версии
sudo apt remove --purge maven -y
sudo apt autoremove -y
Удаление ручной установки
sudo rm -rf /opt/apache-maven-*
sudo rm -f /opt/maven
sudo rm -f /etc/profile.d/maven.sh
sudo rm -f /usr/local/sbin/update-apache-maven
Проверка удаления
command -v mvn
✅ Ожидаемый вывод: Пустая строка.
10. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Выбран и выполнен один из способов установки (APT / ручная)
- [ ]
command -v mvnпоказывает правильный путь - [ ]
mvn -versionпоказывает ожидаемую версию - [ ]
javac -versionпоказывает версию компилятора Java - [ ]
printf 'M2_HOME=%s\n' "$M2_HOME"показывает правильный путь (для ручной установки) - [ ] Тестовый проект создаётся (
mvn archetype:generate) - [ ] Проект собирается (
mvn packageбез ошибок) - [ ] Программа запускается (
java -cp ...выводитHello World!)
Заключение
Вы установили Apache Maven на Debian. Если вы выбрали APT — получили стабильную версию, которая будет обновляться вместе с системой. Если установили вручную — получили самую свежую версию с проверкой SHA512 и GPG-подписи, а также скрипт для автоматического обновления. Maven — это стандартный инструмент для сборки Java-проектов, управления зависимостями и CI/CD. Главное, что нужно запомнить: Maven требует JDK, а не только JRE. Если возникают ошибки с JAVA_HOME, настройте его через файл в /etc/profile.d/. Для работы за прокси настройте ~/.m2/settings.xml.
Что дальше:
- Изучите официальную документацию Maven
- Настройте Maven для работы с корпоративным прокси (раздел 6)
- Интегрируйте Maven с CI/CD (Jenkins, GitLab CI)
- Установите Git для управления версиями кода
- Для контейнеризации Java-приложений изучите Docker
Связанные статьи: