2014-05-03 16 views
6

Tôi đang sử dụng SBT 0.13.2 và tôi muốn kích hoạt tác vụ của mình bằng cách thực hiện tác vụ biên dịch. Tôi biết rằng tôi có thể đạt được điều này bằng cách sử dụng phương pháp triggeredBy, như trong taskDefinition.triggeredBy(compile in Compile).Thực hiện được kích hoạt trong SBT 0.13.x

Tôi có một build.sbt với tác vụ tùy chỉnh đã được xác định.

Vấn đề là tôi không thể hiểu tại sao các công trình sau đây như mong đợi

val triggeredTask = taskKey[Unit]("Triggered by compile") 

triggeredTask <<= Def.task { 
    println("TRIGGERED BY COMPILE") 
}.triggeredBy(compile in Compile) 

nhưng bên cạnh không hoạt động (compile thực hiện tốt nhưng công việc của tôi không được kích hoạt)

val triggeredTask = taskKey[Unit]("Triggered by compile") 

triggeredTask := Def.task { 
    println("TRIGGERED BY COMPILE") 
}.triggeredBy(compile in Compile).value 

My sự hiểu biết là SBT 0.13 đã thực hiện <<= lỗi thời và := phải đủ.

+1

Tôi tin Tôi không thể làm cho nó hoạt động với các trigger hoặc trừ khi sử dụng << cú pháp (do cách gắn thẻ hoạt động) – jsuereth

Trả lời

1

Tôi có thể hiểu lầm những gì bạn đang cố gắng làm.

Nếu tôi làm ví dụ của bạn tiết hơn nó trở nên như thế này:

val triggeredTaskKey = taskKey[Unit]("Triggered by compile") 

val anonymousTask = Def.task { 
    println("TRIGGERED BY COMPILE") 
}.triggeredBy(compile in Compile) 

// I imagine the macro doing something like this 
triggeredTaskKey <<= anonymousTask map (identity) 

này cũng không kích hoạt nhiệm vụ ẩn danh trên compile.

Lưu ý rằng <<= là phiên bản được hiển thị của set trích xuất thông tin vị trí. Và set chỉ đơn giản là một bí danh cho Def.setting(key, value, position) mà lần lượt tạo ra một phiên bản Setting mới. Lưu ý rằng cá thể thiết lập được tạo bên trong có một hàm tạo của 3 tham số đó.

Tôi không nghĩ có cách nào để sbt khai báo cài đặt không có khóa (tôi có thể sai ở đây). Tuy nhiên, có vẻ như bạn muốn tạo một cài đặt (được kích hoạt) mà không có khóa.

Điều này có thể do lỗi, tôi không chắc liệu sbt có nên đệ quy đi phụ thuộc để tìm các tác vụ có khóa triggeredBy trong số info hay không. Hôm nay tuy nhiên không phải (là như đã thấy trong trigger method.

Về mặt lý thuyết bạn có thể làm một công việc xung quanh mà tạo ra các thiết lập với các trigger đúng ràng buộc đối với một số trọng điểm tùy ý. Tôi không chắc chắn làm thế nào mà có thể làm việc.

+0

Tôi nghĩ rằng đây là một lỗi (không chắc chắn nếu đã sửa hay không). jsureth đã đề cập rằng trong một bình luận cho câu hỏi ban đầu Vấn đề không phải là một giải pháp, bởi vì một trong những ví dụ hoạt động Tôi chỉ tò mò về một trong những không. – lpiepiora

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