2015-09-22 30 views
13

Tôi đang cài đặt Sbt-Assembly, nhưng hiện đang bị kẹt.Sbt-lắp ráp phụ thuộc chưa được giải quyết, Scala

Sbt Version (from 'sbt about'): 0.13.8 
Current project is built against scala 2.11.6 
Sbt, sbt plugins, and build definitions are using Scala 2.10.4 

dự án/assembly.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.0") 
    resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 

build.sbt

scalaVersion in ThisBuild := "2.11.6" 

~/.sbt/0,13/global.sbt

scalaVersion := "2.11.6" 

Tôi nhận ra sbt- lắp ráp cho scala 2.10. Nếu tôi thay đổi dự án của mình thành scala 2.10, tôi có các phụ thuộc không có sẵn mới cho 2.10 mà không phải là mong muốn. Có cách nào để cấu hình dự án của tôi để sử dụng 2.10 chỉ cho các plugin lắp ráp?

==== bintray-sbt-plugins: tried 
    http://dl.bintray.com/sbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_2.11/sbt_0.13/0.14.0/ivys/ivy.xml 

    :::::::::::::::::::::::::::::::::::::::::::::: 
    ::   UNRESOLVED DEPENDENCIES   :: 
    :::::::::::::::::::::::::::::::::::::::::::::: 
    :: com.eed3si9n#sbt-assembly;0.14.0: not found 
    :::::::::::::::::::::::::::::::::::::::::::::: 

    Note: Some unresolved dependencies have extra attributes. 
    Check that these dependencies exist with the requested attributes. 

     com.eed3si9n:sbt-assembly:0.14.0 (scalaVersion=2.11, sbtVersion=0.13) 

Trả lời

10

Chỉ cần xóa scalaVersion từ global.sbt.

SBT is recursive nó sử dụng scalaVersion này khi xây dựng tệp xây dựng, không thành công vì SBT 0.13 được tạo bằng Scala 2.10 và tất cả đều là plugin SBT.

+0

Đây là một rất khó chịu, đặc biệt là kể từ khi SBT không giống được xây dựng chống Scala 2.11+ bất cứ lúc nào sớm (n năm sau). Tôi không hoàn toàn rõ ràng lý do tại sao việc xác định phiên bản Scala bạn muốn sử dụng cho các tạo phẩm được xây dựng bởi meta-build nên xác định phiên bản sbt cần để chạy bản dựng đó. Gấp đôi gây phiền nhiễu vì đây là * không * rõ ràng trong tài liệu. –

+0

Đó là một cách khác xung quanh: meta-build cần sử dụng thư viện SBT. Scala 2.11 sẽ được sử dụng trong SBT 1.0 (không ngạc nhiên, nó không thể thay đổi trong bản phát hành nhỏ). –

+0

Thật dễ dàng để thấy rằng SBT 1.0 sẽ sử dụng Scala 2.11: nhưng dòng thời gian vẫn chưa được xác định, và đây là điểm đau. Tôi tò mò mặc dù: Tôi nghĩ lý do tôi gặp rắc rối là meta build của tôi xây dựng một định nghĩa xây dựng thích hợp trên 'scalaVersion' mà nó đã chỉ định, và build của tôi không thể chạy vì SBT không liên kết với cái đó? Khi tôi đã ngừng chỉ định một phiên bản trong meta-build của mình, công cụ xây dựng thích hợp của tôi đã hoạt động (giả sử rằng tôi phụ thuộc vào thư viện cứng trong meta-build của tôi). (Tôi đã đấu vật trong một tuần về điều này.: P) –

4

Tôi gặp sự cố tương tự, những gì đã giúp là thêm addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3") vào project/plugins.sbt thay vì plugins.sbt trong thư mục gốc của dự án của tôi.

+0

Cảm ơn bạn đã tip @wmiel –

1

Tôi gặp lỗi tương tự. Thay đổi phiên bản lắp ráp sbt (từ 0,14 đến 0,14,5) đã hoạt động. phiên bản SBT của tôi là 1.0.3 và tôi đã sử dụng: addSbtPlugin ("com.eed3si9n" % "SBT-lắp ráp" % "0.14.5")

0

Chỉ không sử dụng SBT-lắp ráp ở tất cả! :) Flat-lọ gây ra xung đột trong quá trình hợp nhất cần được giải quyết với assemblyMergeStrategy. Sử dụng phân phối nhị phân nhị phân mà sbt cung cấp cho phép bạn phân phối trong tập lệnh nhị phân, dmg, msi và tar.gz.

Check-out sbt-native-packager

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