我有一个相当大的项目(15个以上的子项目),它有很多外部依赖项。当我在build.sbt
中更改一行然后点击刷新时,IntelliJ会在很长一段时间内(30多分钟)继续解决各种依赖关系。
应该这么慢吗?从命令行使用sbt不会超过30秒左右。
我正在使用 -
Macbook pro mid 2015 with 16 GB ram
IntelliJ IDEA Ultimate 2017.2.5
sbt 0.13.13
scala 2.11.11
答案 0 :(得分:6)
有一点可以帮助缓存依赖项解析,这是一个从sbt 0.13.7开始可用的设置。看看这里:http://www.scala-sbt.org/1.0/docs/Cached-Resolution.html,但基本上你需要为你的构建中的所有项目启用以下设置:
This works
This works too
This works too as well
Working 135
使用此设置,我能够将IntelliJ项目刷新时间从15分钟减少到3分钟。仍然不理想,但更易于管理。
有一些警告,因为它是一个实验设置,它们在该页面中进行了描述。基本上,如果你有SNAPSHOT依赖项,启用它只会让事情变得更糟,所以要注意这一点。
答案 1 :(得分:5)
Kakaji和Haspemulator的答案帮助我在~40个项目构建中将导入时间缩短到约3分钟。除此之外,我发现IntelliJ SBT导入中的大部分时间都花在从{I {1}}命令中获取Ivy的依赖项。
每次执行导入时都会发生这种情况,如果您拥有“图书馆资源来源”。导入项目时启用复选框。如果你也检查一下来源,我希望它会慢一些。因为这意味着要解决更多的库。
加快updateClassifiers
的一种方法是使用coursier进行依赖项解析。我刚刚将以下行添加到project / plugins.sbt,现在它在~1分钟内导入。
updateClassifiers
您可以在https://github.com/sbt/sbt/issues/1930
了解有关addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1")
慢的更多信息
答案 2 :(得分:3)
我按照@ y.bedrov的建议在IntelliJ中启用了SBT shell,现在刷新速度和命令行一样快!
偏好设置>构建,执行,部署>构建工具> SBT>检查"使用SBT shell进行构建和导入"。
答案 3 :(得分:1)
我正在使用上述2的组合( -首选项>构建,执行,部署>构建工具> SBT>选中“使用SBT Shell进行构建和导入” -快递员
具有以下全局build.sbt:
// file: ~/.sbt/0.13/plugins/build.sbt
// purpose: add jar utils useful for development, but not wanted to projects' build.sbt
// much better depts resolvement and fetching
// usage: sbt update
// https://github.com/coursier/coursier#why
resolvers += Resolver.sonatypeRepo("snapshots")
addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.1.0-SNAPSHOT")
// enable this one if you want to use the local artifacts in your local repo's
// ~/.ivy2/local/
// ~/.ivy2/cache/
// instead of the remote ones
// updateOptions := updateOptions.value.withLatestSnapshots(false)
resolvers ++= Seq(
"typesafe" at "https://dl.bintray.com/typesafe/ivy-releases/",
"Maven External Releases" at "https://artifactory-espoo1.ext.net.nokia.com/artifactory/public-maven-remotes/"
)
// eof file: ~/.sbt/0.13/plugins/build.sbt