Loading

Maven 下载 Spigot 依赖失败问题排查:Could not find artifact org.spigotmc:spigot-api…


🔧 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 的镜像规则是否在劫持请求。


posted @ 2025-12-08 23:54  LL。。。  阅读(19)  评论(0)    收藏  举报