Что означает "str"% "str" ​​в SBT? - PullRequest
13 голосов
/ 11 марта 2011

я наткнулся на этот код:

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 ]

12 голосов
/ 11 марта 2011

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

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

относится к зависимости, которая может быть найдена в

http://scala -tools.org / репо-снимка / орг / scalatest / scalatest / 1.0.1-для-2.8.0.RC1-лестница-SNAPSHOT /

Где все до org относится к хранилищу, которое (предварительно) определено в другом месте.

Нелегко найти неявное, которое включает % на String, но, для записи, оно найдено на ManagedProject, преобразуя String в GroupID. В той же черте есть еще один неявный, который включает метод at.

В любом случае, неявный превратит первый String в GroupID, первый % примет String, представляющий идентификатор артефакта, и вернет GroupArtifactID, а второй примет String представляет ревизию и возвращает ModuleID, что окончательно присваивается scalatest.

6 голосов
/ 11 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...