簡體   English   中英

未找到scalacheck / scalatest:如何在sbt / scala中添加它?

[英]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的內容。

我使用scala 2.9.1和sbt 0.11.3,試圖使用scalatest 2.0.M1和1.8; scalacheck:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM