2011-12-01 39 views
19

Tôi có nhiều dự án leiningen riêng biệt có thể phụ thuộc vào nhau.Làm cách nào tôi có thể thiết lập leiningen để làm việc với nhiều dự án?

Ví dụ:

~/projects/mywebapp (my own project) 
~/projects/noir  (a clone of the github repo) 
~/projects/clojureql (a clone of the github repo) 

Tôi muốn có tất cả chúng được biên dịch vào cùng một JVM cùng một lúc. Tôi muốn chạy git repos chảy máu cạnh (kéo mới cam kết/làm cho cam kết của riêng tôi) và không phải chạy lein jar hoặc lein deps và chắc chắn không phải khởi động lại VM nếu tôi thay đổi bất kỳ dự án.

Dưới đây là một trường hợp sử dụng:

Sau khi chạy Lein phô trương, từ bên trong emacs, tôi kết nối với repl và biên dịch một tập tin từ mywebapp (với C-c-k), đòi hỏi một tập tin từ noir. Nó tìm thấy phiên bản của tập tin trong thư mục dự án của tôi. Sau đó, tôi mở tập tin đó, chỉnh sửa và biên dịch nó (với C-c-k).

Lưu ý rằng tôi không yêu cầu tự động biên dịch khi tôi thực hiện lệnh kéo git. Tôi chỉ không muốn phải khởi động lại JVM hoặc làm quá trình biên dịch jar dài dòng.

Điều này có thể ở leiningen không? Làm thế nào tôi có thể thiết lập điều này?

Trả lời

17

Câu hỏi này có từ trợ giúp Lein FAQ không?

Q: Tôi muốn hack hai dự án song song, nhưng thật khó chịu khi chuyển đổi giữa chúng.

A: Sử dụng tính năng được gọi là phụ thuộc thanh toán. Nếu bạn tạo một thư mục có tên là checkouts trong thư mục gốc của dự án và liên kết tượng trưng với một số dự án khác của vào đó, Leiningen sẽ cho phép bạn hack chúng trên song song. Điều đó có nghĩa là những thay đổi về phụ thuộc sẽ được hiển thị trong dự án chính mà không phải trải qua toàn bộ chu trình cài đặt/chuyển đổi dự án/deps/restart-repl. Lưu ý rằng đây không phải là thay thế cho việc liệt kê dự án trong: phụ thuộc; nó chỉ đơn giản là bổ sung cho chu kỳ thay đổi chặt chẽ hơn.

+0

Cảm ơn! Tôi phải bỏ lỡ nó trong FAQ. –

+1

Rất hữu ích. Thông tin đó thực sự phải nằm trong tài liệu chính. – Glen

3

Nếu bạn đã sử dụng swank, bạn không cần phụ thuộc thanh toán lein. Bạn có thể chỉ C-c C-k dự án của bạn (mà sẽ tải các phiên bản jarred của noir/bất cứ điều gì), và sau đó duyệt đến phiên bản địa phương của bạn noir và C-c C-k là tốt. Swank vui vẻ gửi tất cả các mã để repl của bạn, và jvm không bao giờ cần biết rằng nó đến từ một nơi khác!

Tôi chỉ có thể đề xuất điều này cho những thay đổi nhỏ, bởi vì tôi nghĩ nếu bạn biên dịch noir.core, phụ thuộc vào (noir.internal, clojure sẽ tải phiên bản jar noir.internal trong khi bạn biên dịch cục bộ phiên bản noir.core. Mặc dù vậy, nó là một thủ thuật tiện dụng nói chung.

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