在 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)
症状:
Specs2
可解析, scalatest不 org.scalatest#scalatest_2.11_2.10; 2.1.5:未找到
Maven
,使用相同的存储库 - 一切都很完美。问题:
sbt
有什么问题,为什么一直抱怨?答案 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
,这不存在 - 因此错误。