即使项目依赖管理配置没有更改,SBT在每次执行clean
后都会运行依赖项解决方案。当在CI服务器上运行时,这需要耗费时间。
但是文档说:
- 通常情况下,如果自上次成功解析以来未更改依赖项管理配置且检索的文件仍然存在,则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
命令后也会得到保留,但还是会进行解决方案的处理。因此我认为这种方法是错误或不足够的。