SBT使用的仓库是什么?附本地目录及build.sbt配置信息
排查SBT使用的仓库信息
你的当前环境信息
先梳理下你给出的环境细节:
- 本地
~/.sbt目录包含以下文件夹:0.13、1.0、boot、launchers、preloaded - 项目的
build.sbt配置内容:
name := "TestLab1" version := "0.1" scalaVersion := "2.11.8" libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.3.0"
具体排查步骤
咱们一步步来确认SBT实际使用的仓库:
1. 查看当前项目生效的所有仓库
在项目根目录下执行以下命令,能直接输出SBT会用来拉取依赖的所有仓库列表:
sbt show fullResolvers
这个命令会整合全局配置、SBT默认配置和项目本地配置的所有仓库,是最直接的方式。
2. 检查全局仓库配置文件
SBT允许在~/.sbt的对应版本目录下自定义全局仓库,比如:
- 针对SBT 0.13:
~/.sbt/0.13/repositories - 针对SBT 1.0+:
~/.sbt/1.0/repositories
如果这些文件存在,它们会覆盖SBT的默认仓库设置。文件的典型格式如下:
[repositories] local maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
3. 确认项目级仓库配置
你的build.sbt里目前没有显式添加resolvers设置,所以项目会继承全局或SBT默认的仓库。如果后续需要自定义项目仓库,只需在build.sbt中添加类似配置:
resolvers ++= Seq( "Maven Central" at "https://repo1.maven.org/maven2/", "Typesafe Repository" at "https://repo.typesafe.com/typesafe/releases/" )
4. 验证仓库的实际访问情况
如果想确认SBT到底从哪个仓库拉取了spark-sql依赖,可以执行debug模式的update命令:
sbt update -debug
日志里会详细记录每个依赖的查找过程,包括尝试访问的仓库地址和最终下载来源。另外,sbt dependencyTree可以展示依赖的层级关系,也能辅助确认依赖来源。
内容的提问来源于stack exchange,提问作者More Than Five
相关产品推荐
相关产品推荐

