2011-03-10 62 views
12

我碰到這樣的代碼:SBT中「str」%「str」是什麼意思?

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包含,什麼%一樣。

回答

5

如果您使用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

12

它聲明的依賴。特別是,

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發現,轉換StringGroupID。在同一個特徵中,還有另一個暗示,它使at方法成爲可能。

在任何速率,隱式會變成第一StringGroupID,第一%將採取String表示工件ID並返回一個GroupArtifactID,第二將採取String表示修訂和返回ModuleID,這是最後被分配到scalatest

+0

實際上,sbt檢查多個服務器的包,不是嗎? – Raphael 2011-03-11 19:11:00

+0

@Raphael默認情況下,它的確如此。我說過依賴關係_可以在那條路上找到,而不是它唯一會尋找的地方。另一方面,'org'之前的東西是每個查找都會改變的東西。 – 2011-03-11 21:34:25

+2

後續問題是在同一個案例中'%%'的雙重百分比是多少。我覺得我已經看到它在這裏或其他地方詢問和回答,但我找不到它:-( – Ivan 2012-04-07 19:50:05

相關問題