什么“str”%“str”在SBT中意味着什么?

时间:2011-03-10 23:19:56

标签: scala sbt

我遇到了这段代码:

import sbt._ 

class AProject(info: ProjectInfo) extends DefaultProject(info) { 
  val scalaToolsSnapshots = ScalaToolsSnapshots
  val scalatest = "org.scalatest" % "scalatest" %
    "1.0.1-for-scala-2.8.0.RC1-SNAPSHOT"
}

我对scalatest包含的内容以及%的内容感到困惑。

2 个答案:

答案 0 :(得分:12)

它声明了一个依赖。特别是,

val scalatest = "org.scalatest" % "scalatest" % "1.0.1-for-scala-2.8.0.RC1-SNAPSHOT

指的是可以在

找到的依赖关系

http://scala-tools.org/repo-snapshots/org/scalatest/scalatest/1.0.1-for-scala-2.8.0.RC1-SNAPSHOT/

org之前的所有内容都指的是存储库,它是(预先)在别处定义的。

%上找到启用String的隐式内容并不容易,但是,对于记录,它可以在ManagedProject上找到,将String转换为GroupID。在同一个特征中,还有另一个隐含的at方法。

无论如何,隐式会将第一个String转换为GroupID,第一个%会使String代表工件ID并返回{{ 1}},第二个将使用代表修订的GroupArtifactID并返回String,这是最终分配给ModuleID的内容。

答案 1 :(得分:6)

如果您使用Maven,这与Scala DSL基本相同。 %用作分隔符:

<dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest</artifactId>
      <version>1.0.1-for-scala-2.8.0.RC1-SNAPSHOT</version>      
</dependency>

了解更多: http://code.google.com/p/simple-build-tool/wiki/LibraryManagement