2011-12-18 16 views
7

Sono nuovo di Scala e SBT, e sto cercando di capire come aggiungere lift-JSON come dipendenza accumulo nel mio progetto Gioco 2.0. La documentazione lift-JSON dice:Aggiungere lift-JSON come costruire dipendenza for Gioca 2.0 progetto

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

Non sono sicuro anche quando la "descrizione del progetto" è effettivamente memorizzata, ma ho trovato un Build.scala che ha il seguente:

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  
    ) 

} 

È posso vedere la riga che ho aggiunto per net.liftweb. Purtroppo, che sembra essere il posto sbagliato, o il contenuto sbagliato, perché ottengo il seguente errore di generazione:

[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] 

ho una copia del codice sorgente di ascensore, ma non so dove metterlo. E sono abbastanza sicuro di aver messo quella dipendenza nel posto sbagliato. Qualcuno potrebbe per favore indirizzarmi nella giusta direzione?

+0

interessante che hai intenzione di sollevamento JSON all'interno Gioca 2.0. Qual è il tuo ragionamento? Solo curioso. – andyczerwonka

+0

Bene, ho finito per stabilirmi su scala-json (quello creato da Twitter), ma è perché trovo che la libreria JSON fornita con Play sia difficile da lavorare rispetto ad altre opzioni. –

+0

Concordo, l'ascensore sembra essere molto meglio.Non ho provato quello di Twitter. Che cosa ti offre la libreria di Twitter che l'ascensore non lo fa? Mi piace la gestione della classe caso Lift. – andyczerwonka

risposta

20

Sei close-- davvero l'unico problema è che hai il numero di versione sbagliata per lift-JSON.

Una cosa che può essere fonte di confusione in un primo momento quando si arriva nel mondo Scala + SBT è che i pacchetti sono costruiti per le versioni specifiche di Scala. L'attuale versione di lift-json è 2.4-M5. Tuttavia, probabilmente avete visto nomi di pacchetti come "lift-json_2.9.1". Il 2.9.1 qui si riferisce alla versione di Scala per cui è stato creato il pacchetto. SBT aggiunge automaticamente la versione Scala si sta utilizzando per il nome del pacchetto quando si utilizza la sintassi %% che hai citato; quindi l'unico numero di versione che devi specificare è quello lift-json.

Quindi è necessario

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

che è solo una scorciatoia per

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

(notare uno% vs due %%).

Il SBT getting started guide è molto utile; può essere un po 'intimidatorio in un primo momento di capire come funziona (che è piuttosto approccio diverso da esempio Ant o Maven), ma vale la pena ottenere la testa in giro se userete esso.

Non è necessario il codice sorgente di sollevamento, poiché SBT scaricherà tutto ciò che è necessario, incluso un pacchetto sorgente, in modo che l'IDE o il debugger possano accedervi.

Problemi correlati