2011-12-18 15 views
7

Soy nuevo en Scala y SBT, y yo estoy tratando de encontrar la manera de poner ascensor en JSON como una dependencia de construcción en mi proyecto de reproducción 2.0. La documentación de elevación JSON dice:ascensor-JSON como dependencia de construcción para la reproducción del proyecto 2.0

Add dependency to your project description: 
val lift_json = "net.liftweb" %% "lift-json" % "XXX" 

No estoy seguro de que incluso cuando la "Descripción del Proyecto" se almacena, pero he encontrado un Build.scala que producen los siguientes:

import sbt._ 
import Keys._ 
import PlayProject._ 

object ApplicationBuild extends Build { 

    val appName   = "test" 
    val appVersion  = "1.0" 

    val appDependencies = Seq(
     // Add your project dependencies here, 
     "net.liftweb" %% "lift-json" % "2.9.1" 
    ) 

    val main = PlayProject(appName, appVersion, appDependencies).settings(defaultScalaSettings:_*).settings(
     // Add your own project settings here  
    ) 

} 

Usted puede ver la línea que agregué para net.liftweb. Por desgracia, que parece ser el lugar equivocado, o contenido incorrecto, porque me sale el siguiente error de compilación:

[info] Updating {file:/D:/play/test/}test... 
[warn] module not found: net.liftweb#lift-json_2.9.1;2.9.1 
[warn] ==== local: tried 
[warn] D:\play\play-2.0-beta\framework\..\repository/local/net.liftweb/lift-json_2.9.1/2.9.1/ivys/ivy.xml 
[warn] -- artifact net.liftweb#lift-json_2.9.1;2.9.1!lift-json_2.9.1.jar: 
[warn] D:\play\play-2.0-beta\framework\..\repository/local/net.liftweb/lift-json_2.9.1/2.9.1/jars/lift-json_2.9.1.jar 
[warn] ==== Play Repository: tried 
[warn] http://download.playframework.org/ivy-releases/net.liftweb/lift-json_2.9.1/2.9.1/ivys/ivy.xml 
[warn] -- artifact net.liftweb#lift-json_2.9.1;2.9.1!lift-json_2.9.1.jar: 
[warn] http://download.playframework.org/ivy-releases/net.liftweb/lift-json_2.9.1/2.9.1/jars/lift-json_2.9.1.jar 
[warn] ==== Typesafe Repository: tried 
[warn] http://repo.typesafe.com/typesafe/releases/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.pom 
[warn] -- artifact net.liftweb#lift-json_2.9.1;2.9.1!lift-json_2.9.1.jar: 
[warn] http://repo.typesafe.com/typesafe/releases/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.jar 
[warn] ==== public: tried 
[warn] http://repo1.maven.org/maven2/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.pom 
[warn] -- artifact net.liftweb#lift-json_2.9.1;2.9.1!lift-json_2.9.1.jar: 
[warn] http://repo1.maven.org/maven2/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.jar 
[warn] ==== Scala-Tools Maven2 Repository: tried 
[warn] http://scala-tools.org/repo-releases/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.pom 
[warn] -- artifact net.liftweb#lift-json_2.9.1;2.9.1!lift-json_2.9.1.jar: 
[warn] http://scala-tools.org/repo-releases/net/liftweb/lift-json_2.9.1/2.9.1/lift-json_2.9.1-2.9.1.jar 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: net.liftweb#lift-json_2.9.1;2.9.1: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[error] {file:/D:/play/test/}test/*:update: sbt.ResolveException: unresolved dependency: net.liftweb#lift-json_2.9.1;2.9 
.1: not found 
[error] application - 

! @68mcpckf2 - Internal server error, for request [GET /] -> 

play.api.UnexpectedException: Unexpected exception [ResolveException: unresolved dependency: net.liftweb#lift-json_2.9.1 
;2.9.1: not found] 
     at sbt.PlayProject$$anon$1$$anonfun$reload$1$$anonfun$apply$36.apply(SbtPlugin.scala:518) ~[play_2.9.1.jar:na] 
     at sbt.PlayProject$$anon$1$$anonfun$reload$1$$anonfun$apply$36.apply(SbtPlugin.scala:511) ~[play_2.9.1.jar:na] 
     at scala.Option.map(Option.scala:133) [scala-library.jar:na] 
     at sbt.PlayProject$$anon$1$$anonfun$reload$1.apply(SbtPlugin.scala:511) ~[play_2.9.1.jar:na] 
     at sbt.PlayProject$$anon$1$$anonfun$reload$1.apply(SbtPlugin.scala:510) ~[play_2.9.1.jar:na] 
     at scala.Either$LeftProjection.map(Either.scala:183) ~[scala-library.jar:na] 
Caused by: sbt.ResolveException: unresolved dependency: net.liftweb#lift-json_2.9.1;2.9.1: not found 
     at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:216) ~[ivy_2.9.1-0.11.0.jar:na] 
     at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:130) ~[ivy_2.9.1-0.11.0.jar:na] 
     at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:129) ~[ivy_2.9.1-0.11.0.jar:na] 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:110) ~[ivy_2.9.1-0.11.0.jar:na] 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:110) ~[ivy_2.9.1-0.11.0.jar:na] 
     at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:98) ~[ivy_2.9.1-0.11.0.jar:na] 

Tengo una copia del código fuente de ascensor, pero no sé dónde ponerlo. Y estoy bastante seguro de poner esa dependencia en el lugar equivocado. ¿Podría alguien señalarme en la dirección correcta?

+0

interesante que usted está queriendo Ascensor JSON en el interior Juego 2.0. ¿Cuál es tu razonamiento? Sólo curioso. – andyczerwonka

+0

Bueno, terminé acomodándome en scala-json (el creado por Twitter), pero es porque creo que es difícil trabajar con la biblioteca JSON que viene con Play en comparación con otras opciones. –

+0

Estoy de acuerdo, el ascensor uno parece ser mucho mejor.No he probado el de Twitter. ¿Qué le ofrece la biblioteca de Twitter que el ascensor uno no tiene? Me gusta el manejo de la clase de maleta Lift. – andyczerwonka

Respuesta

20

Eres realmente close-- el único problema es que usted tiene el número de versión incorrecta para la elevación-JSON.

Una cosa que puede ser confuso al principio, cuando usted entra en el mundo Scala + SBT es que los paquetes se construyen para versiones específicas de Scala. La versión actual de lift-json es 2.4-M5. Sin embargo, probablemente haya visto nombres de paquetes como "lift-json_2.9.1". El 2.9.1 aquí se refiere a la versión de Scala para la que se creó el paquete. SBT agrega automáticamente la versión de Scala que está utilizando al nombre del paquete cuando usa la sintaxis %% que citó; así que el único número de versión que necesita especificar es el de elevación-json.

tanto es necesario

"net.liftweb" %% "lift-json" % "2.4-M5" 

que es sólo la abreviatura de

"net.liftweb" % "lift-json_2.9.1" % "2.4-M5" 

(Nota de un% frente a dos %%).

El SBT getting started guide es muy útil; puede ser un poco intimidante al principio para descubrir cómo funciona (que es un enfoque bastante diferente de, por ejemplo, Ant o Maven), pero vale la pena darse una vuelta si lo va a usar.

usted no necesitará el código fuente de elevación con todo, como SBT descargará todo lo que need-- incluyendo un paquete fuente, por lo que su IDE o depurador puedan acceder a él.

Cuestiones relacionadas