2011-02-03 22 views
15

Tôi mới dùng Clojure nhưng tôi đang học nó. Tôi muốn biết cách tốt nhất để đóng gói và phân phối chương trình Clojure cho người dùng cuối không nhất thiết là người lập trình. Tôi biết trong Ruby bạn chỉ có thể yêu cầu người dùng tải xuống chương trình với gem install [program name] và sau đó chạy lệnh chạy chương trình. Tương đương với chương trình Clojure là gì?Làm cách nào để bạn phân phối chương trình Clojure cho người không lập trình?

Trả lời

8

Tôi sử dụng Leiningen nó có lệnh uberjar để tạo các tệp jar thực thi tự chứa, mà người dùng của bạn chỉ có thể nhấp đúp. Xem: http://zef.me/2470/building-clojure-projects-with-leiningen

+0

Trong khi lein uberjar là điều tuyệt vời cho những việc nhỏ, nó không khả thi đối với các dự án lớn hơn, đặc biệt nếu bao gồm các thư viện Java bên thứ 3 khác. Lọ không thể (nhất thiết) được mở rộng, kết hợp và tái tạo lại một cách an toàn. Thứ tự là tùy ý trong trường hợp xung đột đường dẫn, các biểu hiện có thể phức tạp (hoặc không thể) để hợp nhất đúng cách, v.v. Bằng mọi cách, hãy bắt đầu với uberjar nhưng cuối cùng bạn có thể phát triển nó. –

+1

Tùy thuộc vào trình độ kỹ thuật của người dùng của bạn, lein-tar cũng có thể thích hợp: https://github.com/technomancy/lein-tar mặc dù không có gì đánh bại sự tiện lợi của một uberjar nếu nó hoạt động cho dự án của bạn. – technomancy

-2

Clojars (http://clojars.org/) là kho lưu trữ lớn hơn của thư viện Clojure mà bạn có thể tìm thấy.

Nó hoạt động hoàn hảo với các dự án Leiningen hoặc bất kỳ công cụ quản lý dự án dựa trên Maven nào khác.

+1

Clojars không cung cấp cài đặt/phân phối cho cơ chế người dùng cuối như được gọi trong câu hỏi. – mac

2

Clojars là tuyệt vời nếu bạn đang phân phối thư viện, nhưng tôi không chắc đó có phải là lựa chọn tốt nhất cho người dùng cuối hay không.

Nếu bạn đã sử dụng Maven, tôi cho rằng tùy chọn tốt nhất là tạo uberjar chứa tất cả các lớp bắt buộc. Nếu bạn muốn làm cho người dùng thân thiện hơn, bạn có thể tạo trình cài đặt từ lọ này bằng cách sử dụng một cái gì đó như IzPack. Chỉ cần nhớ rằng các chương trình Clojure là các chương trình Java, vì vậy tất cả các tùy chọn phân phối cho Java cũng hợp lệ cho Clojure.

1

lein uberjar hoạt động tốt cho các ứng dụng chủ yếu là Clojure, nhưng nó không mở rộng khi sử dụng nhiều thư viện Java, bao gồm giấy phép cần thiết và những thứ khác. Nếu bạn sử dụng plugin Maven Clojure, bạn có thể tận dụng lợi thế của plugin lắp ráp Maven rộng lớn và đáng sợ để xây dựng và cấu trúc cuối cùng mà bạn có thể cần.

Hoặc bạn có thể viết một plugin Leiningen để làm điều tương tự. Tôi không chắc liệu một thứ như vậy có tồn tại không.

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