4

当我更改项目的依赖项之一时,然后sbt为所有依赖项运行解析(不仅针对已更改的依赖项)。在多模块项目中为每个项目做这样的冗余解析尤其耗时。

为什么 sbt 做出如此多余的决议?有没有办法让分辨率更智能?

4

1 回答 1

1

主要原因是因为 sbt 需要解决冲突。不仅如此,ivy 还需要经常解析所有 -SNAPSHOT 依赖关系,以确保它拥有最新的信息。这是因为,默认情况下,sbt 使用“最新的”冲突解决管理器,而不是 maven 使用的“最近的”。根据我的经验,这会减少工件版本的问题。然而,正如 Mark 所说,它确实意味着它将重新创建整个 dep 树。

sbt 中的所有决议都委托给 ivy。为了让它更智能,你必须为 Ivy 创建钩子或者替换 sbt 使用的依赖管理库。在这种解决方案的情况下,我认为唯一可以做的就是改进缓存,以减少恢复以前缓存的工件信息所需的时间。

于 2013-10-26T13:20:09.003 回答