【发布时间】:2013-06-15 23:00:58
【问题描述】:
SBT 每次在 clean 之后运行依赖解析,即使项目依赖管理配置没有更改。在 CI 服务器上运行时,这很耗时。
但是文档says:
- 通常情况下,如果自上次成功解析后没有更改依赖管理配置并且检索到的文件仍然 目前,sbt 不要求 Ivy 执行解析。
每次我使用 sbt clean publish-local 构建项目时,如何阻止 sbt 进行依赖解析?
更新
我发现当我使用sbt 进入交互模式时,sbt 也会运行分辨率。
更新2
正如@Ezhik 所指出的,如果我可以保留target/resolution-cache,那么清理后sbt 将无法解决依赖关系。
所以我尝试将resolution-cache 从目标目录中移出:
ivyConfiguration <<= (externalResolvers, ivyPaths, offline, checksums, appConfiguration, target, streams) map { (rs, paths, off, check, app, t, s) =>
val resCacheDir = t / ".." / "resolution-cache"
new InlineIvyConfiguration(paths, rs, Nil, Nil, off, Option(lock(app)), check, Some(resCacheDir), s.log)
}
现在使用Build.scala 中的此代码,分辨率缓存被放置在项目根目录中,因此在clean 之后保留,但无论如何都会进行分辨率。所以我认为这种方法是错误的或不足的。
【问题讨论】: