2012-06-11 22 views
13

Vì vậy, đến nay tôi đã biên soạn dự án Scala của tôi với SBT (thông qua ngăn xếp Typesafe). Tôi muốn chạy mã trên một số máy ngay bây giờ, thông qua sbt-assembly. Các hướng dẫn sau đây, thay đổi duy nhất tôi thực hiện là trong tệp project/Build.scala của tôi. Dưới đây là phần có liên quan:Bắt hoạt động sbt-assembly

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases", 
resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.8.3" 

Khi tôi chạy sbt compile tuy nhiên, tôi nhận được lỗi này:

sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly/scala_2.9.1/sbt_0.11.2;0.8.3: not found.

Tôi đang làm gì sai?

Cảm ơn!

EDIT Tạo một file build.sbt trong thư mục tương tự như Build.scala (thư mục là /project/) và có hai dòng sau trong đó:

Seq[Setting[_]](resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
       addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3")) 

Bây giờ lỗi là:

[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: com.eed3si9n#sbt-assembly;0.8.3: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] 
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes. 
[warn]  com.eed3si9n:sbt-assembly:0.8.3 (sbtVersion=0.11.2, scalaVersion=2.9.1) 
[warn] 
[error] {file:/Users/myname/current/projectname/project/}default-d7da9a/*:update: sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.8.3: not found 

EDIT 2 Hm, sau khi tôi thực hiện thành công sbt compile, s Tôi có thể nhập bảng điều khiển sbt và nhập assembly?

> assembly 
[error] Not a valid command: assembly 
[error] Not a valid project ID: assembly 
[error] Not a valid configuration: assembly 
[error] Not a valid key: assembly 
[error] assembly 
[error] 

EDIT 3 JK hiểu rồi. Đã thêm thông tin build.sbt như được chỉ định trong GitHub README.

+0

"thông tin như quy định trong GitHub README "- liên kết xin vui lòng? – Vasily802

Trả lời

10

Có hai điểm ở đây. Một là các plugin SBT không phải là chỉ phụ thuộc vào thư viện - đặc biệt, chúng sử dụng phiên bản SBT hiện tại theo cách tương tự mà các thư viện Scala khác sử dụng phiên bản Scala. Cách khác là libraryDependencies trong project/Build.scala ảnh hưởng đến các phụ thuộc cho dự án , không phải cho xây dựng.

Bản xây dựng đầy đủ của SBT chính là dự án SBT, chỉ nằm một cấp xuống cây thư mục và do đó có thể xây dựng cấu trúc riêng của nó theo cùng một cách xây dựng bình thường. Không giống như một bản xây dựng bình thường, việc cần xây dựng đầy đủ là cần thiết trong một số trường hợp, hầu như không bao giờ có lý do để sử dụng bản dựng đầy đủ để xây dựng, do đó, việc sử dụng các tệp .sbt nằm ở project/ hầu như luôn đủ.

Sự cố khác là phiên bản. SBT có chức năng tiện ích gọi là addSbtPlugin xử lý mọi thứ cho bạn. Nó có một moduleID và thêm tất cả các thông tin SBT và Scala versioning cần thiết.

Vì vậy, để có được SBT-lắp ráp làm việc trong một hoàn toàn xây dựng, bạn tạo một file .sbt ở dưới project/ (thông thường hoặc project/build.sbt hoặc project/plugins.sbt) và đặt phân giải và phụ thuộc của xây dựng của bạn có:

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3") 
+0

Định dạng của các đối số cho 'addSbtPlugin' là gì? Tôi sẽ làm gì cho 'sbt-assembly'? – adelbertc

+0

'addSbtPlugin (" com.eed3si9n "%" sbt-assembly "%" 0.8.3 ")', do đó, phần build.scala của bạn liên quan đến cài đặt sẽ trông giống như: Seq [Đặt [_]] (độ phân giải + = ..., độ phân giải + = ..., addSbtPlugin (...)) ' –

+0

Trên thực tế, nó đột nhiên xảy ra với tôi rằng bạn có thể đặt nó vào tập tin sai hoàn toàn. Nếu đây là project/Build.scala, thì đặt nó vào đó sẽ không làm gì cả (nó sẽ khai báo _source của bạn code_ phụ thuộc vào sbt-assembly, không phải dự án) Để làm cho dự án sử dụng nó, hãy đặt các thiết lập cho nó trong project/build.sbt hoặc project/project/Build.scala (tốt nhất là trước đây, vì hầu như không bao giờ có một lý do để sử dụng một bản xây dựng đầy đủ cho meta-build của dự án) –

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