如何在Scala项目中将Play框架作为依赖项导入

4

我fork了btce-scala,这样我就可以开发一个交易机器人了。我正在通过添加标准的sbt项目结构、创建build.sbt等方式来清理这个库:

~/code/scala/btce-scala) cat build.sbt
name := "btce-scala"

version := "0.1"

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"

scalaVersion := "2.10.3"

libraryDependencies ++= Seq(
    "net.liftweb" % "lift-json_2.9.1" % "2.6-M2",
    "org.specs2" %%  "specs2" % "2.3.8" % "test",
    "joda-time" % "joda-time" % "2.3",
    "org.joda" % "joda-convert" % "1.6",
    "commons-codec" % "commons-codec" % "1.9",
    "com.typesafe.play" % "play_2.2.2" % "2.2.2"
)

我的问题是我不确定如何导入最新版本的Play框架。我需要它来使用play.api.libs.ws.WS

~/code/scala/btce-scala   sbt run
[info] Set current project to btce-scala (in build file:/Users/bryangarza/code/scala/btce-scala/)
[info] Updating {file:/Users/bryangarza/code/scala/btce-scala/}btce-scala...
[info] Resolving com.typesafe.play#play_2.2.2;2.2.2 ...
[warn]  module not found: com.typesafe.play#play_2.2.2;2.2.2
[warn] ==== local: tried
[warn]   /Users/bryangarza/.ivy2/local/com.typesafe.play/play_2.2.2/2.2.2/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/com/typesafe/play/play_2.2.2/2.2.2/play_2.2.2-2.2.2.pom
[warn] ==== Typesafe Repository: tried
[warn]   http://repo.typesafe.com/typesafe/releases/com/typesafe/play/play_2.2.2/2.2.2/play_2.2.2-2.2.2.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.typesafe.play#play_2.2.2;2.2.2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
sbt.ResolveException: unresolved dependency: com.typesafe.play#play_2.2.2;2.2.2: not found

...

[error] (*:update) sbt.ResolveException: unresolved dependency: com.typesafe.play#play_2.2.2;2.2.2: not found

很显然是因为找不到Play_2.2.2,那么我该在哪里找到这个仓库以便添加到sbt呢?
1个回答

12

你的依赖关系有误,请使用以下内容代替:

libraryDependencies ++= Seq("com.typesafe.play" %% "play" % "2.2.2")

1
它对我有效。你使用了双%%吗?同时尝试使用"com.typesafe.play" % "play_2.10" % "2.2.2"。 - Rado Buransky
你说得对,确实是我把%写成了%%。有时候最微小的错误也是最难修复的。谢谢!顺便问一下,能否解释一下%%是什么意思?我在阅读sbt文档时不够清楚。 - Emil
1
我的理解是 %% 会查找与你的 Scala 版本兼容的依赖项。因此在你的情况下(Scala 2.10.3),它将重写你的依赖项,就像我之前写的那样,变成 "com.typesafe.play" % "play_2.10" % "2.2.2"。如果你使用的是 Scala 版本 6.6.6,那么应该是 "com.typesafe.play" % "play_6.6.6" % "2.2.2"。 - Rado Buransky
1
如果您使用%%,则无需指定_2.10。sbt将尝试下载您正在使用的Scala版本的Play库。简而言之,您在sbt设置“scalaVersion”中指定的内容。 - chauhraj
太酷了,这非常有用。谢谢你们两位的回答。 - Emil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接