SBT ScalaTest依赖解析

时间:2014-05-02 00:21:54

标签: sbt

build.sbt 中。

resolvers += "Repo1" at "http://oss.sonatype.org/content/repositories/releases"

resolvers += "Repo2" at "http://repo1.maven.org/maven2"


libraryDependencies ++= Seq(
  "org.specs2" %% "specs2" % "2.3.11" % "test",
  "org.scalatest" %% "scalatest_2.11" % "2.1.5" % "test"
)


scalacOptions in Test ++= Seq("-Yrangepos")

// Read here for optional dependencies:
// http://etorreborre.github.io/specs2/guide/org.specs2.guide.Runners.html#Dependencies

resolvers ++= Seq("snapshots", "releases").map(Resolver.sonatypeRepo)

症状:

  

org.scalatest#scalatest_2.11_2.10; 2.1.5:未找到

  • 使用Maven,使用相同的存储库 - 一切都很完美。

问题:

  • sbt有什么问题,为什么一直抱怨?

1 个答案:

答案 0 :(得分:4)

你应该

libraryDependencies ++= Seq(
  "org.specs2" %% "specs2" % "2.3.11" % "test",
  "org.scalatest" %% "scalatest" % "2.1.5" % "test"
)

libraryDependencies中(请注意已删除的_2.11)。

原因是%%将为您添加正确的后缀,具体取决于您使用的Scala版本。您可以在Getting the right Scala version with %%中阅读更多内容。

  

如果您使用groupID %% artifactID%revision而不是groupID%   artifactID%revision(差异是后面的双%%   groupID),sbt会将您项目的Scala版本添加到工件中   名称。这只是一条捷径。

它的原因是通过SBT文件发布公约:

  

用于指示Scala的哪个版本的基础机制   编译库是为了追加_   图书馆的名字。对于Scala 2.10.0及更高版本,二进制版本是   用过的。例如,对于变体,dispatch变为dispatch_2.8.1   编译时针对Scala 2.8.1和dispatch_2.10进行编译   2.10.0,2.10.0-M1或任何2.10.x版本。这种相当简单的方法允许与Maven,Ant和其他构建的用户进行互操作   工具。

您自己添加了Scala版本,并且SBT附加了一个额外版本,因此您的工件名称变为scalatest_2.11_2.10,这不存在 - 因此错误。