使用 Maven 镜像的坑



众所周知,在国内下载 maven 等依赖需要配置包管理软件使用 maven 镜像,才能得到尚可忍受的下载速度。

基于 sbt 的方案

可以通过修改 $HOME/.sbt/repositories 文件来添加下载依赖的镜像列表,我一般用的如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[repositories]
local
aliyun: https://maven.aliyun.com/repository/public
typesafe: https://repo.typesafe.com/typesafe/ivy-releases, 
          [organization]/[module]/(scala_[scalaVersion]/)
          (sbt_[sbtVersion]/)[revision]/[type]s/
          [artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin: https://dl.bintray.com/sbt/sbt-plugin-releases/,
          [organization]/[module]/(scala_[scalaVersion]/)
          (sbt_[sbtVersion]/)[revision]/[type]s/
          [artifact](-[classifier]).[ext]
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

国内镜像主要用的是阿里云的镜像,毕竟财大气粗,也许维护得比其他友商好些。具体地址最好还是参考 官方使用指南 ,而不是抄简中网上搜索到的过时地址。

像 sbt、Ammonite、Mill 等工具,一般会使用本地已经缓存的依赖文件,这样可以不用每次构建时都重新下载。但是有的时候,即使第一次下载的依赖文件是有问题的,这些工具也不会删除缓存的有问题的依赖文件,重新下载;而是继续使用有问题的依赖文件来参与构建项目,在编译的时候报错信息也不提及依赖文件的正确性验证结果。这就会误导用户以为是依赖的第三方库有问题,比如版本号错误或者新版本作了不兼容的修改等,实际上只不过是下载的第三库文件有问题而已。

为了使这些工具重新下载已缓存的依赖文件,最简单直观的方案就是删掉已缓存的依赖文件。

缓存的依赖文件,除了一般常见的 $HOME/.ivy/cache$HOME/.ivy/local$HOME/.m2/repository 这些位置外,由于很多 Scala 的构建工具还会使用 Coursier 来下载依赖文件,还应检查 $HOME/.cache/coursier/v1 (on Linux)C:\Users\你的系统用户名\AppData\Local\Coursier\cache\v1 (on Windows)

本文链接: https://paxinla.github.io/posts/2021/09/shi-yong-maven-jing-xiang-de-keng.html

知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载、演绎,
但是必须保留本文的署名 Charles(包含链接),且不得用于商业目的。