2014-05-02 232 views
0

build.sbtSBT ScalaTest依賴關係解析

resolvers += "Repo1" at "http://oss.sonatype.org/content/repositories/releases" 

resolvers += "Repo2" at "http://repo1.maven.org/maven2" 


libraryDependencies ++= Seq(
    "org.specs2" %% "specs2" % "2.3.11" % "test", 
    "org.scalatest" %% "scalatest_2.11" % "2.1.5" % "test" 
) 


scalacOptions in Test ++= Seq("-Yrangepos") 

// Read here for optional dependencies: 
// http://etorreborre.github.io/specs2/guide/org.specs2.guide.Runners.html#Dependencies 

resolvers ++= Seq("snapshots", "releases").map(Resolver.sonatypeRepo) 

症狀:

org.scalatest#scalatest_2.11_2.10; 2.1.5:找不到

  • 使用Maven,使用相同的存儲庫 - 一切正常。

問:

  • 有什麼不好sbt,它爲什麼抱怨所有的時間?

回答

4

你應該有

libraryDependencies ++= Seq(
    "org.specs2" %% "specs2" % "2.3.11" % "test", 
    "org.scalatest" %% "scalatest" % "2.1.5" % "test" 
) 
libraryDependencies

(注意是刪除_2.11)。

原因是%%會爲您添加正確的後綴,具體取決於您使用的Scala版本。您可以在Getting the right Scala version with %%閱讀更多內容。

如果使用組ID %%的artifactId%的修訂,而不是組ID% 的artifactId%修訂(所不同的是 組ID後的雙%%),SBT將增加項目的斯卡拉版本神器 名。這只是一條捷徑。

它的原因是出版慣例,通過SBT文件:

用來表示反對是追加_到 庫的名稱,其斯卡拉的版本 庫編譯的基本機制。對於Scala 2.10.0及更高版本,使用的二進制版本是 。例如,對於針對斯卡拉2.8.1編譯的變體 和針對 2.10.0,2.10.0-M1或任何2.10.x版本編譯的dispatch_2.10,調度變爲dispatch_2.8.1。這種相當簡單的方法允許與Maven,Ant和其他構建工具的用戶進行互操作。

您已經添加了一個版本的Scala自己和SBT附加一個額外的,所以你的神器的名字成爲scalatest_2.11_2.10,不存在 - 因此錯誤。