2011-12-18 4 views
7

Я новичок в Scala и SBT, и я пытаюсь выяснить, как добавить лифтинг-json в зависимость от сборки в моем проекте Play 2.0. Документация подъемный говорит JSON:Добавить лифтинг-json как зависимость сборки для проекта 2.0 2.0

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

Я не уверен, что даже там, где «описание проекта» на самом деле хранится, но я нашел Build.scala, который имеет следующее:

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  
    ) 

} 

Вы может видеть строку, которую я добавил для net.liftweb. К сожалению, как представляется, не в том месте, или неправильное содержание, потому что я получаю следующее сообщение об ошибке сборки:

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

У меня есть копия исходного Lift кода, но я не знаю, куда его деть. И я уверен, что поставил эту зависимость не в том месте. Может ли кто-нибудь указать мне в правильном направлении?

+0

Интересно, что вы желаете Lift JSON в Play 2.0. Каковы ваши рассуждения? Просто любопытно. – andyczerwonka

+0

Ну, я наткнулся на scala-json (созданный Twitter), но это потому, что я обнаружил, что библиотека JSON, которая поставляется с Play, будет трудной для работы по сравнению с другими вариантами. –

+0

Согласен, лифт один кажется намного лучше.Я не пробовал Twitter. Что библиотека Twitter дает вам, что лифта нет? Мне нравится обработка класса Case Lift. – andyczerwonka

ответ

20

Вы действительно близко - единственная проблема в том, что у вас неправильный номер версии для lift-json.

Одна вещь, которая может сбивать с толку вначале, когда вы попадаете в мир Scala + SBT, заключается в том, что пакеты создаются для определенных версий Scala. Текущая версия lift-json - 2,4-M5. Тем не менее вы, вероятно, видели имена пакетов, такие как «lift-json_2.9.1». 2.9.1 здесь относится к версии Scala, для которой был создан пакет. SBT автоматически добавляет версию Scala, которую вы используете, к имени пакета, когда вы используете синтаксис %%, который вы указали; поэтому единственный номер версии, который вам нужно указать, - это лифт-json.

Таким образом, вам нужно

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

, который просто сокращенная для

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

(обратите внимание на один% против два %%).

SBT getting started guide очень полезно; вначале может быть немного запугать, чтобы выяснить, как это работает (это совсем другой подход, например, от Ant или Maven), но стоит потратить голову, если вы будете использовать его.

Вам не понадобится исходный код Lift, поскольку SBT будет загружать все, что вам нужно, включая исходный пакет, поэтому ваша IDE или отладчик могут перейти к нему.

1

Ответ от Давида прав, однако мне все еще трудно найти правильную версию. (2,4-M5 получил устаревает в среднем времени)

Вы должны выглядеть получили в последнее время строит на:

http://repo1.maven.org/maven2/net/liftweb/

Посмотрите на lift-json и версию Scala вы используете, чтобы получить правильный каталог, для мне это было:

http://repo1.maven.org/maven2/net/liftweb/lift-json_2.11/

Смежные вопросы