Closed Itsusinn closed 2 years ago
待验证的推断
由于maven镜像缓存以单个版本为最小单位 当获取mirai2.jar时,jar,source-jar等亦同时开始同步。
也就是说获取mirai2.jar时,mcl找不到该包,maven镜像同步亦开始 等到获取jar时,镜像同步完成,命中jar
DEBUG日志
初次运行
10:18:08 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.zip
10:18:08 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai2.jar
10:18:08 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai.jar
10:18:09 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1-all.jar
10:18:09 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.jar
10:18:09 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.jar
Downloading mirai-message-source-1.5.1.jar [==============================] 102.36 KB
10:18:09 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.jar.sha1
Downloading mirai-message-source-1.5.1.sha1 [==============================] 40 B
10:18:09 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai.metadata
报NoClassDefFoundError
删除plugins下已下载的插件 & 第二次运行
10:19:36 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.zip
10:19:36 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai2.jar
10:19:36 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai2.jar
Downloading mirai-message-source-1.5.1.jar [==============================] 103.14 KB
10:19:37 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai2.jar.sha1
Downloading mirai-message-source-1.5.1.sha1 [==============================] 40 B
10:19:37 [DEBUG] HTTP HEAD https://maven.aliyun.com/repository/public/org/mesagisto/mirai-message-source/1.5.1/mirai-message-source-1.5.1.mirai.metadata
10:19:37 [DEBUG] RepoCache has been cleared
Work around 1: 每次发布在maven central后,在自动化中用curl请求阿里镜像的对应地址 Work around 2:
publication {
artifacts.remove(tasks.getByName("jar"))
artifact(tasks.getByName("buildPlugin"))
}
publish时不上传jar
个人认为缓存同步应该由该包的管理者来保证
个人认为缓存同步应该由该包的管理者来保证
尽管包管理者可以保证自己的缓存同步, 但他不总是能保证其依赖或递归依赖的缓存。
确实如此。mcl也不会使用到其依赖和其递归依赖。
阿里云maven镜像的缓存策略是,如果用户不获取,则不缓存。 当用户第一次从镜像获取时,先返回包不存在的错误,再缓存。
因此当下载失败时,可能不是包不存在,而是镜像尚未同步。