Добавьте lift-json в качестве зависимости сборки для проекта Play 2.0 - PullRequest
7 голосов
/ 18 декабря 2011

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

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, но я не знаю, где ее разместить. И я почти уверен, что поставил эту зависимость не туда. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

20 голосов
/ 18 декабря 2011

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

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

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

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

что является просто сокращением для

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

(примечание один% против двух %%).

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

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

1 голос
/ 24 ноября 2014

Ответ от Дэвида правильный, однако мне все еще было трудно найти правильную версию.(2.4-M5 устарел за это время)

Вы должны посмотреть последние сборки:

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

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

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

...