🔧 Maven 下载 Spigot 依赖失败问题排查:Could not find artifact org.spigotmc:spigot-api…
在使用 Maven 开发 Minecraft 插件时,我遇到了一个依赖无法下载的问题。
项目中引入了 Spigot API:
<dependency><groupId>org.spigotmc</groupId><artifactId>spigot-api</artifactId><version>1.21.3-R0.1-SNAPSHOT</version><scope>provided</scope>
</dependency>
并配置了官方仓库:
<repositories><repository><id>spigotmc-repo</id><url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url></repository><repository><id>sonatype</id><url>https://oss.sonatype.org/content/groups/public/</url></repository>
</repositories>
但 Maven 构建时仍然失败,报错如下:
Could not find artifact org.spigotmc:spigot-api:jar:1.21.3-R0.1-SNAPSHOT in aliyunmaven (https://maven.aliyun.com/repository/public)
❗ 问题原因分析
这里依赖版本和仓库地址都没有问题,真正的问题是:
🔥 阿里云 Maven 镜像劫持了所有仓库请求
很多国内用户使用的 Maven settings.xml 文件里包含这一段:
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>Aliyun Maven</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
mirrorOf="*" 的意思是:
所有 Maven 仓库都必须经过我。
结果:
| 想访问的仓库 | 实际被代理去哪了 |
|---|---|
| Spigot Snapshot 仓库 | ❌ 被拦截并转发到阿里云公有仓库 |
| 阿里云有没有 Spigot 依赖? | ❌ 没有 → 所以报错 |
也就是说,不是 Spigot 仓库没配置,而是 根本没访问到 Spigot 仓库。
✔ 解决办法
✅ 方法 1:修改 settings.xml,避免阿里云接管所有仓库(推荐)
找到:
Maven 安装目录 /conf/settings.xml
将镜像部分改成:
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf> <!-- 改成只代理中央仓库 --><name>Aliyun Maven</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
这样:
| 仓库类型 | 下载路径 |
|---|---|
| 中央仓库依赖 | 阿里云(速度快) |
| Spigot 等第三方仓库 | 原仓库(不会被拦截) |
执行编译:
mvn clean package -U
就能正常拉到 Spigot 依赖。
✅ 方法 2:使用纯净的官方 Maven(无需修改 settings.xml)
到 Maven 官网下载不带镜像配置的版本即可:
🔗 https://maven.apache.org/
解压后配置环境变量,用它构建项目即可。
✅ 方法 3:新建独立 Maven 仓库(临时解决)
不用改配置,直接执行:
mvn -Dmaven.repo.local=D:\maven-repo clean package
让 Maven 使用一个全新的仓库目录,避免旧缓存和镜像干扰。
📌 总结
| 项目配置问题? | ❌ |
| 仓库地址错误? | ❌ |
| 版本号错误? | ❌ |
| 真实原因 | ✔ 阿里云镜像拦截并代理了 Spigot 仓库请求 |
只要调整 Maven 镜像配置,让 Spigot 请求不再被拦截,依赖就能正常下载。
💡 这并不是开发者的问题,而是国内镜像的行为造成的。
以后遇到依赖明明配置了仓库却依旧下载不到的情况,优先检查 settings.xml 的镜像规则是否在劫持请求。