2011-12-06 36 views
5

Tôi đã tải xuống một dự án sử dụng sbt làm hệ thống xây dựng và tôi muốn xây dựng nó. Bạn sẽ nghĩ nó sẽ đơn giản như gõ "sbt" hay gì đó, nhưng không.Làm cách nào để xây dựng một dự án sử dụng sbt làm hệ thống xây dựng?

Tôi nghĩ rằng tôi muốn thêm một câu hỏi cho điều này bởi vì nó có thể mất giờ nghĩa đen để con số này ra ngày của riêng bạn. Mình không giỡn đâu.

Trả lời

6

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 
+1

"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

+1

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

3

Tôi không nghĩ mình có thể giải thích rõ hơn rằng Getting Started Guide có thể. Xin vui lòng đọc 6 phần đầu tiên của nó, mà không nên quá dài thời gian, để có được nó và chạy.

+0

Thật không may là Hướng dẫn Bắt đầu hiện được nhắm mục tiêu đến những người muốn tìm hiểu làm thế nào để sử dụng sbt để tạo ra các dự án dựa trên sbt của riêng họ, chứ không phải những người bận rộn chỉ muốn xây dựng một dự án dựa trên sbt hiện có nhanh như con người có thể. –

+0

Vâng, tôi nghĩ rằng phần 5, ** Chạy **, giải thích khá tốt về cách chạy các dự án dựa trên sbt :) – uzilan

+0

Nó đề cập đến hầu hết những điều tôi đề cập đến trong câu trả lời của mình! Và nó dựa trên wiki nên rất khó để tìm ra trang wiki nào bạn nên xem xét cho phiên bản sbt mà bạn đang cố gắng sử dụng! Argh! Tài liệu Sbt khiến tôi phát điên! –

6

tl; dr:

sbt compile 

Nếu bạn muốn chạy nó:

sbt run 

Để xem những gì các mục tiêu khác có sẵn:

sbt tasks 

Để có được một số (khác) trợ giúp, nhưng chủ yếu nhắm mục tiêu vào các lệnh được nhập từ bảng điều khiển sbt (ví dụ: chạy sbt mà không có sự phân biệt ters):

sbt help 

Tất cả điều này giả định phiên bản sbt> = 0.10.0. Để xem những gì phiên bản của SBT đang sử dụng, làm:

grep sbt.version project/build.properties 

Nếu không có tập tin như vậy, và có một tập tin với phần mở rộng ".sbt" trên thư mục cơ sở (không phải là thư mục dự án), thì đó là> = 0.10.0. Tất nhiên, nếu grep hoạt động, nó sẽ cho bạn biết phiên bản.

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