从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 版本,或者格式是出于某种特定目的?
答案 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中列出所有依赖项(包括它们的版本和其他有用信息),或者将其可视化为树或图形。