Что означает "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
,