0

我是 JVM 开发的新手(我正在使用 Scala 和 SBT)并且在解决依赖关系时遇到了麻烦。昨天,我在解决org.restlet.2.1.1依赖关系时遇到了麻烦,今天,我在解决以下问题时遇到了麻烦:

[error] (*:update) sbt.ResolveException: unresolved dependency: com.mongodb.casbah#casbah_2.9.2;2.1.5-1: not found
[error] unresolved dependency: org.scalatra#scalatra_2.9.2;2.3.0: not found
[error] unresolved dependency: org.scalatra#scalatra-akka2_2.9.2;2.3.0: not found
[error] unresolved dependency: org.scalatra#scalatra-specs2_2.9.2;2.3.0: not found

我正在使用giter8来自 github 的 scalatra-mongodb 项目模板:单击我。由于该项目有点旧,因此我试图获取不再存在或兼容的过时版本是有道理的。在这种情况下怎么办?我尝试摆弄build.sbt文件中的版本号,但这不起作用(而且似乎更糟!)。

以下是我的build.sbt文件的内容:

scalaVersion := "2.9.2"

mainClass := Some("JettyLauncher")

seq(webSettings :_*)

port in container.Configuration := 8080

seq(assemblySettings: _*)

libraryDependencies ++= Seq(
  "com.mongodb.casbah" %% "casbah" % "2.8.1-1",
  "org.scalatra" %% "scalatra" % "2.2.0",
  "org.scalatra" %% "scalatra-akka2" % "2.2.0",
  "org.scalatra" %% "scalatra-specs2" % "2.2.0" % "test",
  "org.mortbay.jetty" % "servlet-api" % "3.0.20100224" % "provided",
  "org.eclipse.jetty" % "jetty-server" % "8.0.0.M3" % "container, compile",
  "org.eclipse.jetty" % "jetty-util" % "8.0.0.M3" % "container, compile",
  "org.eclipse.jetty" % "jetty-webapp" % "8.0.0.M3" % "container, compile"
  )

resolvers ++= Seq(
  "Sonatype OSS" at "http://oss.sonatype.org/content/repositories/releases/",
  "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/",
  "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/",
  "Akka Repo" at "http://akka.io/repository/",
  "Web plugin repo" at "http://siasia.github.com/maven2"
)

以下是我的plugins.sbt文件:

addSbtPlugin("com.earldouglas" %% "xsbt-web-plugin" % "0.9.0")

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2")

请注意,当我第一次生成模板时,我收到了第一个插件缺少的依赖项。幸运的是,这个插件的 github 页面提供了更新的说明,我能够克服这种依赖关系。

无论如何,我需要哪些版本的依赖项才能让一切正常工作?一般来说,解决这些依赖关系的策略是什么(现在我不知道该怎么做(除了访问 github 页面并摆弄版本号)?

感谢所有的帮助!

4

1 回答 1

0

我至少已经让 sbt 解决了我对任何有价值的依赖项(它现在有类路径问题......)。无论如何,以下是我的新改进build.sbt文件:

scalaVersion := "2.10.4"

mainClass := Some("JettyLauncher")

seq(webSettings :_*)

port in container.Configuration := 8080

seq(assemblySettings: _*)

libraryDependencies +=  "org.mongodb" %% "casbah-core" % "2.7.3"

libraryDependencies += "org.scalatra" %% "scalatra" % "2.2.0-RC3" cross CrossVersion.binary

libraryDependencies +=  "org.scalatra" %% "scalatra-akka" % "2.2.0-RC3" 

libraryDependencies +=  "org.scalatra" %% "scalatra-specs2" % "2.2.0" % "test"

libraryDependencies +=  "org.mortbay.jetty" % "servlet-api" % "3.0.20100224" % "provided"

libraryDependencies +=  "org.eclipse.jetty" % "jetty-server" % "9.0.0.M5" % "container"

libraryDependencies +=  "org.eclipse.jetty" % "jetty-util" % "9.0.0.M5" % "container"

libraryDependencies +=  "org.eclipse.jetty" % "jetty-webapp" % "9.0.0.M5" % "container"

resolvers ++= Seq(
  "Sonatype releases" at "http://oss.sonatype.org/content/repositories/releases/",
  "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/",
  "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/",
  "Akka Repo" at "http://akka.io/repository/",
  "Web plugin repo" at "http://siasia.github.com/maven2"
)

我真正做的只是花几个小时在谷歌上搜索和搜索与我正在使用的 scala 版本(2.10.4)兼容的 mvn 存储库。我了解到这%%会将 scala-version 附加到依赖项名称(这似乎是一个很好的约定,因为 Scala 一直在发展)。有一次,我解决了一些依赖项,其余的都崩溃了!

于 2014-10-23T04:47:50.667 回答