2012-05-02 42 views
7

Tôi có một dự án trình biên dịch scala. Một số trường hợp thử nghiệm phụ thuộc vào tệp jar đã tạo. Do đó, tôi luôn chạy theo cách thủ công tác vụ" gói "trước khi chạy" kiểm tra " nhiệm vụLàm thế nào để chạy "gói" trước khi thử nghiệm "

làm thế nào tôi có thể thêm một nhiệm vụ SBT rằng sẽ làm công việc của "test" nhưng sẽ phụ thuộc vào "gói"

Trả lời

7

SBT 0.12:.?

Thêm dòng sau để thiết lập dự án của bạn :

(test in Test) <<= (test in Test) dependsOn (Keys.`package` in Compile) 

Điều này thay đổi nhiệm vụ kiểm tra cho dự án của bạn. Nhưng bạn cũng có thể xác định nhiệm vụ của riêng bạn:

val myTestTask = TaskKey[Unit]("my-test-task", "runs package and then test") 

Và sau đó thêm này để thiết lập dự án của bạn:

myTestTask <<= (test in Test) dependsOn (Keys.`package` in Compile) 

SBT 0.13:

Thêm dòng sau để thiết lập dự án của bạn:

(test in Test) := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 

Điều này thay đổi nhiệm vụ kiểm tra cho yo dự án ur. Nhưng bạn cũng có thể xác định nhiệm vụ của riêng bạn:

val myTestTask = taskKey[Unit]("runs package and then test") 

Và sau đó thêm này để thiết lập dự án của bạn:

myTestTask := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 
+0

Tôi nhận được sau lỗi 'build.sbt: 21: lỗi: gói eof kỳ vọng nhưng' 'found.' '(kiểm tra trong bài kiểm tra) << = (kiểm tra trong bài kiểm tra) phụ thuộc vào gói' – dips

+1

tôi phải thay đổi nó thành' (test in Test) << = (test in Test) dependsOn (Phím. \ 'gói \' trong biên dịch) '. Đây có phải là cách thông thường hay điều gì đó khác thường với thiết lập của tôi không? Lưu ý rằng bỏ qua 'Keys' cho tôi lỗi' tham chiếu đến gói là mơ hồ. nó được nhập khẩu hai lần trong cùng một phạm vi, nhập khẩu Keys._ và nhập khẩu sbt._' – dips

+2

@ dips Đó là một cuộc xung đột không may với từ khóa 'package' của Scala. –

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