【问题标题】:scalacheck/scalatest not found: how to add it in sbt/scala?未找到 scalacheck/scalatest:如何在 sbt/scala 中添加它?
【发布时间】:2012-06-06 06:18:54
【问题描述】:

我已经在我的 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 URL 而不是真正的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 test 的输出有很多 解决 org.easytesting#fest-util;1.1.6 或只是另一个库,但与 scalatest 无关。

我使用 scala 2.9.1 和 sbt 0.11.3,尝试使用 scalatest 2.0.M1 和 1.8;缩放检查:

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。

我做错了什么?谢谢。

【问题讨论】:

标签: scala sbt scalatest


【解决方案1】:

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

libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"

您应该将其添加到项目基目录(您称为“my_app”)的build.sbt添加到project/plugins.sbt

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

【讨论】:

    【解决方案2】:

    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"
    )
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 2015-11-21
      • 2017-09-04
      • 1970-01-01
      • 2023-03-02
      • 2012-09-18
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多