2011-03-10 23 views
12

Bu kod geldi:SBT'de "str"% "str" ​​ne anlama geliyor?

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" 
} 

Ve scalatest içerir ve ne % ne ben olarak oldukça karıştı.

cevap

5

Maven'i kullandıysanız, bu aslında Scala DSL ile aynı şeydir. ayırıcı olarak% eserler:

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

Devamı: Bir bağımlılık beyan http://code.google.com/p/simple-build-tool/wiki/LibraryManagement

12

. Özellikle,

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/

bulunabilir bir bağımlılık söz edildiğinde, her org herhangi bir yerde tanımlanan (ön) olan depo, değinmektedir önce.

Bu kayıt için String üzerinde % sağlayan ama buna gerek de bulmak kolay değil, bir StringGroupID bir dönüşme, ManagedProject bulunur. Aynı özellikte, at yöntemini etkinleştiren başka bir örtük var. Herhangi bir oranda

, kapalı bir GroupID içine ilk String dönecek birinci % yapay numarası temsil eden bir String almak ve GroupArtifactID dönün ve ikinci düzeltme temsil eden bir String alacak ve ModuleID döndürür, Sonunda scalatest'a atanan şey budur.

+0

Aslında, sbt paket için birden çok sunucuyu kontrol ediyor değil mi? – Raphael

+0

@Raphael Varsayılan olarak, evet, öyle. Bağımlılığın, bu yoldan bulunabileceğini söyledim, bu onun aradığı tek yer değil. Öte yandan, her bir bakış için 'org' öncesi olan şey değişecek. –

+2

Bir takip sorusu, aynı durumda %% çiftin %% 'anlamına gelmesidir. Ben burada ya da başka bir yerde sordu ve cevap gördüm gibi hissediyorum hissediyorum ama bulamıyorum :-( – Ivan