Что означает "str" % "str" ​​в 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 ответа

Решение

Если вы использовали 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

Он объявляет зависимость. Особенно,

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 представляющий идентификатор артефакта и вернуть GroupArtifactID, а второй возьму String представляя ревизию и вернуть ModuleIDчто является, наконец, назначенным scalatest,

Другие вопросы по тегам