我在我的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-version特定的。
我做错了什么?我知道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测试有很多 解决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。
我做错了什么?感谢。
答案 0 :(得分:9)
Scalatest不是构建插件,而是测试库。你应该这样添加:
libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"
您应该将其添加到项目的基本目录中的build.sbt
(您称为“my_app”),而不是添加到project/plugins.sbt
。
它尝试查找的网址中有0.11.3
的原因是因为构建插件与您正在使用的SBT版本绑定。
答案 1 :(得分:4)
plugins.sbt
文件和addSbtPlugin
用于添加sbt插件。不依赖。
使用您使用的模板,您应该在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"
)
它应该有用。