Trước tiên, bạn sẽ muốn sử dụng sbt-extras, vì điều đó tự động tải xuống và sử dụng đúng phiên bản sbt. Đang cố gắng sử dụng phiên bản sbt sai (mới hơn hoặc cũ hơn dự án bạn đang cố gắng xây dựng cho biết nó đòi hỏi) sẽ không nhất thiết phải hoạt động và có thể gây ra lỗi lạ.
Run nó:
~/path/to/sbt-extras/sbt
Chờ cho nó để khởi động và tải về tất cả mọi thứ. Nếu bạn cần sử dụng proxy được xác thực, bạn cần phải chỉnh sửa tập lệnh để chỉ định tên người dùng và mật khẩu cho proxy.
Kiểm tra phiên bản Scala có sbt nghĩ rằng cần thiết để chống lại (ở cuối đầu ra, nếu mọi thứ hoạt động). Nếu điều này là OK, tốt, bạn không cần phải làm bất cứ điều gì. Nếu nó không phải là, bạn có thể tạm thời chỉ định một phiên bản một cách rõ ràng với ++, ví dụ:
++2.8.1
(Nếu bạn muốn chắc này vĩnh viễn, bạn có thể chỉnh sửa các tập tin xây dựng định nghĩa, nhưng như có liên quan đến thực hiện một sự thay đổi cho các tệp dưới quyền kiểm soát phiên bản, có thể không phải là những gì bạn muốn làm.)
Bây giờ, nếu bạn đang sử dụng phiên bản cũ hơn của sbt, đừng bỏ qua bước tiếp theo! Bạn có thể gặp lỗi lạ nếu bạn làm.
update
Bây giờ bạn có thể xây dựng và kiểm tra những gì bạn đã xây dựng:
test
Nếu bạn nhận được một lỗi "Tên tệp quá dài", đây không phải là một vấn đề SBT-cụ thể, đó là một vấn đề scala , thường xuyên nhất ảnh hưởng đến người dùng Ubuntu (về mặt kỹ thuật, đối với người dùng Unbuntu, nó thường liên quan đến các thư mục gốc được mã hóa bằng các encfs). Nếu bạn đang sử dụng Scala> = 2.9, hãy chỉnh sửa bản dựng để sử dụng tùy chọn dòng lệnh scalac cho phép bạn chỉ định độ dài tên tệp tối đa. Nếu không, nếu bạn đang dùng Linux, bạn có thể chuyển hướng bản dựng đến/dev/shm hoặc/tmp bằng cách chạy các lệnh này trong dấu nhắc trình bao (không sbt nền với CTRL + Z trên Unix, vì nó có thể xuất hiện để ngăn chặn hoạt động bình thường):
rm -rf target
ln -s /dev/shm target
(bạn có thể phải thực hiện các lệnh này trong dự án/xây dựng thay vì hoặc cũng)
trên thực tế, nó có thể là tốt hơn, và thậm chí có thể được an toàn hơn, để. tạo thư mục con của/dev/shm hoặc/tmp và sử dụng thư mục con đó thay thế.
Kết quả biên dịch sẽ xuất hiện trong mục tiêu.Sau đó bạn có thể muốn chạy nó, nếu nó là một cái gì đó bạn có thể chạy:
run
Nếu mọi thứ đều OK, bạn có thể tùy chọn xuất bản kết quả tại địa phương do đó kết quả sau đó có thể được chọn tự động bởi SBT khác builds:
publish-local
"Tên tệp quá dài": Giải pháp là * giảm * 'Xmax-classfile-name' thành 143, không tăng nó như tôi nghĩ ban đầu. Điều này là do [ecryptfs không thể xử lý tên tệp dài hơn] (https://bugs.launchpad.net/ecryptfs/+bug/344878). – cberzan
Nếu bạn đang sử dụng thư mục gốc được mã hóa, một giải pháp dễ dàng là liên kết thư mục đích của bạn với thư mục bên ngoài thư mục được mã hóa, ví dụ: ln -s/tmp target – Jack