2010-06-28 26 views
6

Sử dụng lệnh ~run sbt sẽ chạy lại mục tiêu thực thi cho tôi bất cứ khi nào tệp nguồn thay đổi. Điều này là tốt đẹp, nhưng nếu mục tiêu là một quá trình máy chủ chạy dài, sbt bị đình chỉ cho đến khi con chấm dứt, vì vậy thay đổi nguồn không có hiệu lực.Cách thiết lập sbt để khởi động lại quá trình máy chủ chạy dài khi thay đổi mã?

Tôi muốn có màn hình sbt và biên dịch lại các nguồn của mình ngay cả khi mã đích đang chạy và khởi động lại quá trình trên một phiên bản thành công. Có ai đã cố gắng để thiết lập này?

Trả lời

8

(Xin lỗi vì trả lời post-mortem)

https://github.com/spray/sbt-revolver đã được tạo ra chỉ để giải quyết vấn đề này.

+0

Đó thực sự là câu trả lời được phê duyệt! –

5

Không thể thực hiện điều này thông qua chức năng "~" được tích hợp sẵn. Vấn đề là, nhiệm vụ "~" -prefixed phải hoàn thành. Nếu nó là một ứng dụng máy chủ lắng nghe trên một số cổng, bạn đã dừng nó trước.

Có thể bạn có thể tạo nhiệm vụ của riêng mình hoặc sửa đổi nhiệm vụ run, để giết/thoát ứng dụng đang chạy (ví dụ: gửi chuỗi thoát ma thuật trên cổng nghe?). Xem này để biết thêm thông tin:

http://code.google.com/p/simple-build-tool/wiki/CustomActions

+0

Cảm ơn. Tôi sẽ để nó mở thêm một vài ngày nữa, nhưng điều này có thể sẽ được thực hiện như một hành động tùy chỉnh, nếu có. – Crosbie

1

JRebel có thể giúp bạn với nạp lại lớp động nếu đó là những gì bạn đang sau. Giấy phép Scala miễn phí có sẵn here. Thông tin sử dụng tại SBT site.

+0

Tải lại trực tuyến thậm chí có thể là giải pháp nhanh hơn trong hầu hết các trường hợp, mặc dù có lẽ không đáng tin cậy. Vì JRebel là một giấy phép sở hữu độc quyền, tôi sẽ sử dụng tuyến hành động tùy chỉnh trước tiên. Cảm ơn! – Crosbie

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