无法解析org.scalatest#scalatest; 3.0.1:找不到依赖项问题

时间:2017-06-08 03:29:30

标签: scala sbt scalatest

1 {}}中的新手,通过scala tutorial

我正在尝试使用教程中提到的scala,但收到此错误:

scalatest

我的[error] (*:update) sbt.ResolveException: unresolved dependency: org.scalatest#scalatest;3.0.1: not found > scalaVersion [info] 2.10.6 文件如下所示:

build.sbt

同样如上所述here,我已在相应位置创建了name := "tasky" version := "0.1.0" libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.1" libraryDependencies += "org.scalatest" % "scalatest" % "3.0.1" % "test" global.sbt文件,其中包含所需的详细信息。但是,我仍然得到错误:

plugins.sbt

解决此问题的任何指示?

2 个答案:

答案 0 :(得分:2)

您应该使用%%而不是单个%,如下所示。 %%将工件从scalatest更改为scalatest_2.10,因为项目中使用的scala版本是2.10。

libraryDependencies +=  "org.scalatest" %% "scalatest" % "3.0.1" % "test"

您可以使用%%或明确指定artifact_id,如下所示

libraryDependencies +=  "org.scalatest" % "scalatest_2.10" % "3.0.1" % "test"

以后推荐使用前一种方法。

<强>解释

Scala的次要版本不向后兼容。所以用2.10版本编译的库不能在使用scala 2.11的项目中使用。因此,必须通过为每个版本单独编译来发布库(例如,2.10,2.11和2.12)。

因此所有Scala工件都以scala版本后缀发布。因此,scalatest有一个神器scalatest_2.10,scalatest_2.11和scalatest_2.12。

为了更容易根据您的scala版本在SBT版本中选择正确版本的工件,SBT提供了一个方便的符号%%,它将通过为您附加scala版本来更改工件ID 。因此,"org.scalatest" %% "scalatest" % "3.0.1"会在您的构建中动态转换为org.scalatest#scalatest_2.10;3.0.1

答案 1 :(得分:0)

如果您使用的是maven repository,那么它应该是

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "3.0.1"

你的scalactic应该是

libraryDependencies += "org.scalactic" % "scalactic_2.11" % "3.0.1"