什么是在sbt中声明依赖的方法

时间:2015-01-07 17:20:21

标签: scala playframework-2.0 sbt

在sbt文档中,他们提到了声明项目依赖关系的不同方法。

libraryDependencies += groupID % artifactID % revision

libraryDependencies += groupID % artifactID % revision % configuration

libraryDependencies ++= Seq(
   groupID %% artifactID % revision,
   groupID %% otherID % otherRevision
)

然而,当我用:

创建新的Play2框架时
activator new HelloWorld play-scala

我可以在build.sbt中看到以下代码:

libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
)

他们是如何解决的(jdbc,anorm,cache,ws)?是否还有其他方式来声明依赖项?

1 个答案:

答案 0 :(得分:3)

这些都是同一种方法的所有例子。 libraryDependencies密钥带有一系列工件,每个工件都定义为

groupID % artifactID % revision % configuration

在大多数情况下,省略了通常用于限制依赖关系添加到configuration范围的可选"test"

如果您想宣布个人依赖,那么

libraryDependencies += single

如果您有多个,则通常按顺序将它们添加为批处理:

libraryDependencies ++= Seq(first, second, third)

在上一个示例中,jdbcanorm等已经如上所述定义,因此您只是指这些预先存在的值。你也可以自己做:

lazy val myDep = groupID % artifactID % revision

libraryDependencies += myDep

要连接groupIDartifactID,有一个特殊的运算符%%而不是%,它对Scala库很有用,因为它们通常是针对不同版本的Scala编译的,例如2.10和2.11。 %%表示Scala版本附加到artifactID,依赖于此常见约定。即。

"com.foo" %% "bar" % "1.0"

等于

"com.foo" % "bar_2.11" % "1.0"

如果您的项目的Scala版本是2.11,或

"com.foo" % "bar_2.10" % "1.0"

如果你的Scala版本是2.10等等。