dependencyOverrides导致sbt更新时间增加4-5倍

时间:2014-03-05 02:25:00

标签: intellij-idea sbt

SBT 0.13.1 ,Scala 2.10.3

我们已经实现了一个插件,可以将dependencyOverrides设置为标准工件版本。我的dependencyOverrides集合大约有950个工件。并不是说我们拥有所有这些依赖关系,但这是人们需要使用的标准版本。

实施覆盖后,Mac上的sbt update次(11个子项目的参考项目)(Mac OS 10.7.5,Oracle JDK 1.7.0_45)从 ~30秒 ~140秒。引用的工件实际上更小,因为它消除了许多不同版本的重复工件。

我在-Xprof下运行sbt,看看问题是什么,并发现了这个主要区别:

dependencyOverrides之前:

Compiled + native   Method                        
3.2%    10  +     0    org.apache.ivy.core.module.id.ModuleRules.getRules

dependencyOverrides之后:

Compiled + native   Method                        
31.6%   136  +     2    org.apache.ivy.core.module.id.ModuleRules.getRules

Xprof没有给我调用计数。但是,通过对ModuleRules.getRules的简短回顾,似乎并没有太多的复杂性。这给了我一个暗示,调用计数可能会飙升。我必须使用不同的剖面仪来获得更好的抓地力。

不幸的是,IntelliJ的Scala / SBT插件不断导致sbt resolve,用户体验更糟糕。我希望之前遇到过这个问题的其他人能够解决这个问题,或者甚至知道一个解决问题的好办法(除了潜入常春藤代码并解决问题+自己修改常春藤代码)。

提前感谢任何输入。

0 个答案:

没有答案