sbt,libraryDependencies没有groupID和修订版?

时间:2018-03-17 02:39:04

标签: scala playframework sbt

从sbt documentation开始,libraryDependencies格式为:

libraryDependencies += groupID % artifactID % revision

例如:

libraryDependencies += "org.postgresql" % "postgresql" % "42.1.4"

但是,在Play 2.6.x Scala Starter Example项目中,build.sbt中的 guice libraryDependencies仅显示

libraryDependencies += guice

我们如何知道sbt将采用哪个 guice 版本,或者格式是出于某种特定目的?

1 个答案:

答案 0 :(得分:1)

使用Play Framework时,通常使用special sbt plugin设置项目。你应该在project/plugins.sbt

中拥有它
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "...")

此插件定义了不同可选依赖项的值,例如问题中的guice。所以你可以转到sbt插件源并检查这个guice究竟是什么(here):

val guice = component("play-guice")

component定义为

def component(id: String) = "com.typesafe.play" %% id % play.core.PlayVersion.current

所以它实际上是指Play框架的play-guice子项目,guiceDeps上的depends,它们在playframework/framework/project/Dependencies.scala中定义:

val guiceVersion = "4.2.0"
val guiceDeps = Seq(
  "com.google.inject" % "guice" % guiceVersion,
  "com.google.inject.extensions" % "guice-assistedinject" % guiceVersion
)

这只是为了表明它来自哪里。通常,当您想要检查传递依赖项时,应使用sbt-dependency-graph插件。它可以在sbt shell中列出所有依赖项(包括它们的版本和其他有用信息),或者将其可视化为树或图形。