2011-12-18 32 views
7

Tôi mới sử dụng Scala và SBT, và tôi đang cố gắng tìm hiểu cách thêm phụ kiện xây dựng-json vào dự án Play 2.0 của tôi. Các tài liệu nâng-json nói:Thêm phụ thuộc vào xây dựng cho dự án Play 2.0

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

Tôi không chắc chắn kể cả trường hợp "mô tả dự án" là thực sự được lưu trữ, nhưng tôi tìm thấy một Build.scala rằng có những điều sau đây:

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  
    ) 

} 

Bạn có thể thấy dòng tôi đã thêm cho net.liftweb. Thật không may, điều đó dường như là địa điểm sai, hay những nội dung sai, vì tôi nhận được build lỗi sau:

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

Tôi có một bản sao của mã nguồn Lift, nhưng tôi không biết được nơi để đặt nó. Và tôi khá chắc chắn rằng tôi đặt sự phụ thuộc đó vào sai chỗ. Làm ơn ai đó có thể chỉ cho tôi đúng hướng?

+0

Thú vị khi bạn muốn nâng JSON trong Play 2.0. Lý do của bạn là gì? Chỉ tò mò thôi. – andyczerwonka

+0

Vâng, tôi đã giải quyết vấn đề scala-json (do Twitter tạo ra), nhưng đó là vì tôi thấy thư viện JSON đi kèm với Play khó làm việc so với các tùy chọn khác. –

+0

Tôi đồng ý, nâng một dường như tốt hơn rất nhiều.Tôi đã không thử Twitter. Thư viện Twitter cung cấp cho bạn thư viện nào không? Tôi thích xử lý các trường hợp Lift. – andyczerwonka

Trả lời

20

Bạn đang thực sự gần-- vấn đề duy nhất là bạn đã có số phiên bản sai cho thang máy-json.

Một điều có thể gây nhầm lẫn lúc đầu khi bạn tham gia vào thế giới Scala + SBT là các gói được xây dựng cho các phiên bản cụ thể của Scala. Phiên bản hiện tại của thang máy-json là 2.4-M5. Tuy nhiên, bạn có thể đã thấy các tên gói như "lift-json_2.9.1". 2.9.1 ở đây đề cập đến phiên bản Scala mà gói được xây dựng. SBT tự động thêm phiên bản Scala bạn đang sử dụng vào tên gói khi bạn sử dụng cú pháp %% mà bạn đã trích dẫn; do đó, số phiên bản duy nhất bạn cần chỉ định là số tăng-json.

Vì vậy bạn cần

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

mà chỉ là viết tắt cho

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

(lưu ý một% vs hai %%).

SBT getting started guide rất hữu ích; nó có thể là một chút đáng sợ lúc đầu tiên để tìm ra cách nó hoạt động (mà là một cách tiếp cận khác hoàn toàn từ ví dụ như Ant hoặc Maven), nhưng nó có giá trị nhận được đầu của bạn xung quanh nếu bạn sẽ được sử dụng nó.

Bạn sẽ không cần mã nguồn Nâng, vì SBT sẽ tải xuống mọi thứ bạn cần-- bao gồm gói nguồn, vì vậy IDE hoặc trình gỡ lỗi của bạn có thể điều hướng đến nó.

1

Câu trả lời từ David là chính xác, tuy nhiên, tôi vẫn thấy rất khó để tìm phiên bản chính xác. (2,4-M5 đã lỗi thời trong thời gian trung bình)

Bạn nên tìm kiếm đã gần đây được xây dựng tại địa chỉ:

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

Hãy tìm lift-json và phiên bản scala bạn đang sử dụng để có được những thư mục bên phải, cho tôi là:

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

Các vấn đề liên quan