← Назад к вопросам
Что будешь делать, если при использовании Maven не приходят артефакты
1.2 Junior🔥 221 комментариев
#Другое
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что делать, если Maven не загружает артефакты
Эта проблема встречается часто, особенно при работе с корпоративными сетями или новыми проектами. У меня есть систематический подход к её решению.
Шаг 1: Проверить интернет соединение
# Проверить доступность репозитория
curl -I https://repo.maven.apache.org/maven2/
# Или с wget
wget --spider https://repo1.maven.org/maven2/
Шаг 2: Очистить кеш Maven
# Удалить локальный репозиторий
rm -rf ~/.m2/repository
# Или selectively удалить конкретный артефакт
rm -rf ~/.m2/repository/com/example/myapp/
# На Windows
del %USERPROFILE%\.m2\repository
Шаг 3: Проверить settings.xml
<!-- ~/.m2/settings.xml -->
<settings>
<servers>
<!-- Если используются приватные репозитории -->
<server>
<id>my-private-repo</id>
<username>myuser</username>
<password>mypass</password>
</server>
</servers>
<mirrors>
<!-- Перенаправление всех запросов на зеркало -->
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>default</profile>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
</settings>
Шаг 4: Проверить pom.xml
<!-- pom.xml -->
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<!-- Если используются SNAPSHOT версии -->
<repository>
<id>snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
Шаг 5: Запустить Maven с debug информацией
# Очень подробный логирование
mvn -X clean install
# Или с помощью flags
mvn -e clean install # Show errors
mvn -q clean install # Quiet mode
# Пересчитать чексумы
mvn install -U # Update snapshots and releases
Шаг 6: Проверить файрвол и прокси
<!-- ~/.m2/settings.xml для прокси -->
<proxies>
<proxy>
<id>proxy</id>
<active>true</active>
<protocol>https</protocol>
<host>proxy.company.com</host>
<port>8080</port>
<username>proxyuser</username>
<password>proxypass</password>
<nonProxyHosts>*.company.com</nonProxyHosts>
</proxy>
</proxies>
Шаг 7: Использовать альтернативные репозитории
<repositories>
<!-- Основной репозиторий -->
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<!-- Зеркало Aliyun (быстрое для Азии) -->
<repository>
<id>aliyun-central</id>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
<!-- JCenter -->
<repository>
<id>jcenter</id>
<url>https://jcenter.bintray.com/</url>
</repository>
<!-- CloudFlare (зеркало) -->
<repository>
<id>cloudflare-maven</id>
<url>https://cdn-mirror.maven.io/maven2/</url>
</repository>
</repositories>
Шаг 8: Проверить корректность координат
// Неправильно:
// <groupId>com.example.incorrect</groupId>
// <artifactId>mylib-typo</artifactId>
// <version>1.0.1</version> // Неверсия не существует
// Правильно:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.0.0</version>
</dependency>
// Или используем parent для управления версией:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- version не нужен, берётся из parent -->
</dependency>
Шаг 9: Проверить availability онлайн
# Проверить есть ли артефакт в MVNRepository
curl -I https://mvnrepository.com/artifact/org/springframework/spring-core/5.3.0
# Поискать прямо
# Сайт: https://mvnrepository.com/
Шаг 10: Как последнее средство — локальный артефакт
# Установить JAR локально
mvn install:install-file \
-Dfile=mylib.jar \
-DgroupId=com.example \
-DartifactId=mylib \
-Dversion=1.0.0 \
-Dpackaging=jar
# Или добавить в settings.xml
Пример полного решения
// pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<repositories>
<!-- Несколько репозиториев для надёжности -->
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</project>
Команды для диагностики
# Показать dependency tree
mvn dependency:tree
# Разрешить конфликты зависимостей
mvn dependency:resolve
# Проверить что поломалось
mvn verify -DskipTests
# Переиндексировать локальный репозиторий
mvn install:install-file -Dfile=target/myapp-1.0.0.jar -DgroupId=com.example -DartifactId=myapp -Dversion=1.0.0 -Dpackaging=jar
Заключение
При проблеме с загрузкой артефактов я проверяю в такой последовательности:
- Интернет соединение — базовое
- Очистка кеша — на 80% решает проблему
- Репозитории и конфигурация — settings.xml и pom.xml
- Debug информация —
mvn -Xдля диагностики - Альтернативные репозитории — если основной недоступен
- Проверка зависимостей — правильные версии и координаты
- Локальное решение — в крайнем случае установить JAR локально
Обычно помогают первые три шага. Если ничего не помогает — проблема в инфраструктуре или доступе.