2011-03-10 21 views
12

me encontré con este código:¿Qué significa "str"% "str" ​​en 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" 
} 

Y estoy bastante confundido en cuanto a lo scalatest contiene, y lo que la hace %.

Respuesta

5

Si utilizó Maven esto es esencialmente lo mismo pero con Scala DSL. % funciona como un separador:

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

Leer más: http://code.google.com/p/simple-build-tool/wiki/LibraryManagement

12

Declara una dependencia. En particular,

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

se refiere a una dependencia que se pueden encontrar en

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

Donde todo antes org refiere al repositorio, que es (pre-) definido en otro lugar.

No es fácil encontrar el implícito que permite % en String, pero, para que conste, se encuentra en ManagedProject, la conversión de un String en un GroupID. En el mismo rasgo también hay otro implícito que habilita el método at.

En cualquier caso, la implícita se gire la primera String en un GroupID, la primera % tomará un String representa el ID artefacto y devolver una GroupArtifactID, y la segunda se llevará a un String que representa la revisión y devolver una ModuleID, que es lo que finalmente se asigna al scalatest.

+0

En realidad, sbt comprueba varios servidores para el paquete, ¿no? – Raphael

+0

@Raphael Por defecto, sí, lo hace. Dije que la dependencia _se puede encontrar_ en ese camino, no que sea el único lugar que buscará. Por otro lado, lo que está antes de 'org' es lo que cambiará para cada búsqueda. –

+2

Una pregunta de seguimiento es qué significa el doble por ciento '%%' en el mismo caso. Siento que lo he visto y respondido aquí o en otro lugar pero no puedo encontrarlo :-( – Ivan

Cuestiones relacionadas