![](/img/trans.png)
[英]org.scalacheck and org.scalatest not found after sbt->compile
[英]scalacheck/scalatest not found: how to add it in sbt/scala?
我在我的ubuntu12上安裝了來自http://typesafe.com/stack/download的 typesafe-stack,而不是創建了一個play項目(g8 typesafehub / play-scala),現在我想在我的項目中添加scalatest或scalacheck。
所以my_app / project / plugins.sbt有以下幾行:
// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
// Use the Play sbt plugin for Play projects
addSbtPlugin("play" % "sbt-plugin" % "2.0.1")
然后我使用addSbtPlugin添加了scalatest:
addSbtPlugin("org.scalatest" %% "scalatest" % "2.0.M1" % "test")
現在,當我運行'sbt test'時,它會失敗並顯示以下消息
[info] Resolving org.scalatest#scalatest;2.0.M1 ...
[warn] module not found: org.scalatest#scalatest;2.0.M1
[warn] ==== typesafe-ivy-releases: tried
[warn] http://repo.typesafe.com/typesafe/ivy-releases/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== local: tried
[warn] ~/.ivy2/local/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== Typesafe repository: tried
[warn] http://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom
[warn] ==== typesafe-ivy-releases: tried
[warn] http://repo.typesafe.com/typesafe/ivy- releases/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom
我不明白:為什么它使用這個http://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom網址代替真正的http://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1/2.0.M1/scalatest_2.9.1-2.0.M1.pom ?
與scalacheck相同的問題:它還嘗試使用特定於sbt-version的artifactId進行下載,而存儲庫僅具有特定於scala的版本。
我究竟做錯了什么? 我知道sbt中必須有一個開關,而不是使用sbt-version作為工件URL的一部分?
我也嘗試在我的plugins.sbt中使用它
libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"
但看起來它被sbt完全忽略,scalatest.jar沒有出現在類路徑中:
my_app/test/AppTest.scala:1: object scalatest is not a member of package org
[error] import org.scalatest.FunSuite
因為sbt clean && sbt test的輸出有很多解析org.easytesting#fest-util; 1.1.6或者只是另一個庫,但沒有關於scalatest的內容。
resolvers ++= Seq(
"snapshots" at "http://oss.sonatype.org/content/repositories/snapshots",
"releases" at "http://oss.sonatype.org/content/repositories/releases"
)
libraryDependencies ++= Seq(
"org.scalacheck" %% "scalacheck" % "1.9" % "test"
)
使用相同的結果,即它使用不存在的sbtVersion特定POM URL。
我究竟做錯了什么? 謝謝。
Scalatest不是構建插件,而是測試庫。 你應該像這樣添加它:
libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"
你應該將它添加到build.sbt
的基本目錄(你稱之為“my_app”)的build.sbt
, 而不是 project/plugins.sbt
。
它試圖找到的URL中有0.11.3
的原因是因為構建插件與您正在使用的SBT版本相關聯。
plugins.sbt
文件和addSbtPlugin
用於添加sbt插件。 不依賴。
使用您使用的模板,您應該在project/Build.scala
添加依賴project/Build.scala
。 你會找到一個部分:
val appDependencies = Seq(
// Add your project dependencies here,
)
替換為:
val appDependencies = Seq(
"org.scalacheck" %% "scalacheck" % "1.9" % "test",
"org.scalatest" %% "scalatest" % "2.0.M1" % "test"
)
它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.