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

pav*_*vel 5 scala sbt scalatest

我已经在我的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")
Run Code Online (Sandbox Code Playgroud)

然后我使用addSbtPlugin添加了scalatest:

addSbtPlugin("org.scalatest" %% "scalatest" % "2.0.M1" % "test")
Run Code Online (Sandbox Code Playgroud)

现在,当我运行'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
Run Code Online (Sandbox Code Playgroud)

我不明白:为什么它使用这个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"
Run Code Online (Sandbox Code Playgroud)

但看起来它被sbt完全忽略,scalatest.jar没有出现在类路径中:

my_app/test/AppTest.scala:1: object scalatest is not a member of package org
[error] import org.scalatest.FunSuite
Run Code Online (Sandbox Code Playgroud)

因为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"
)
Run Code Online (Sandbox Code Playgroud)

使用相同的结果,即它使用不存在的sbtVersion特定POM URL.

我究竟做错了什么?谢谢.

Dan*_*ral 9

Scalatest不是构建插件,而是测试库.你应该像这样添加它:

libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"
Run Code Online (Sandbox Code Playgroud)

你应该把它添加到build.sbt你的项目的基本目录(你被称为"程序my_app"),project/plugins.sbt.

0.11.3在尝试查找的URL中的原因是因为构建插件与您正在使用的SBT版本相关联.