解析SBT依赖关系

时间:2014-10-23 00:41:39

标签: mongodb sbt casbah giter8

我是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

我正在使用github:click me中的giter8 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页面和摆弄版本号)?

感谢您的帮助!

1 个答案:

答案 0 :(得分: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版本兼容的mvn存储库(2.10.4)。我了解到%%会将scala版本附加到依赖项名称(似乎是一个很好的约定,因为Scala总是在不断发展)。有一次,我解决了一些依赖关系,其余的陷入困境!