val scalaToolsSnapshots = "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
val specs = "org.scala-tools.testing" % "specs_2.9.0-1" % "1.6.8" % "test"
这是什么意思?
"groupId" % "artifactId" % "version" % "scope"
。%
字符串运算符,直到我偶然发现了这里。上面链接的sbt wiki描述了%
的作用在此处。具体来说,“%
方法从字符串创建ModuleID
对象,然后将这些ModuleID
添加到libraryDependencies
中。” - kdbanman你也可以使用以下方式简化这个声明:
scalaVersion := "2.9.0-1"
scalaToolsSnapshots := "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
specs := "org.scala-tools.testing" %% "specs" % "1.6.8" % "test"
%%
将指定使用与项目 Scala 版本二进制兼容的 specs 版本。
如果您计划升级 Scala 版本或打算针对多个 Scala 版本发布库,则应考虑使用它。
在底层,首先将字符串隐式转换为 GroupID
,使用 %%
方法将下一个字符串转换为 GroupArtifactId
,接下来的 %
创建一个 ModuleID
,最后的 %
添加一个范围到 ModuleID
。
这确实是sbt(简单构建工具)。
'at'方法定义在字符串上并返回一个Resolver。 '%'方法定义在字符串上并返回一个ModuleID。