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
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
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.
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
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.
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.
- 1. Làm cách nào để phân phối chương trình python?
- 2. Phân phối các chương trình Python
- 3. Làm cách nào để phân phối chương trình Python mà không yêu cầu người dùng có thời gian chạy Python?
- 4. Chương Trình Phân phối Được viết bằng Python
- 5. Nhúng swank-clojure vào chương trình java
- 6. Làm cách nào để đặt tên quy trình cho chương trình Java?
- 7. Tôi nên sao chép Qt DLL nào để làm cho chương trình của mình độc lập?
- 8. Verizon SongID - Chương trình được lập trình như thế nào?
- 9. Lập trình "DSL" của Clojure
- 10. Tôi có thể phân phối chương trình MATLAB của mình dưới dạng nguồn mở không?
- 11. cách điển hình để chạy chương trình clojure
- 12. Trình bày Clojure dành cho người mới bắt đầu?
- 13. Làm thế nào để bạn sử dụng core.logic một cách thiết thực trong một chương trình Clojure lớn hơn?
- 14. Cách kết thúc/Buộc đóng chương trình (trong Clojure)
- 15. Phân phối tệp để người nhận không thể đọc được
- 16. Làm thế nào để chuyển đổi một chương trình Python để một .exe chương trình Windows Runnable?
- 17. Chuyển hướng stdout và stderr sang ổ cắm cho chương trình shell được phân phối
- 18. Thuật toán nào cho chương trình lập lịch biểu
- 19. Làm cách nào để viết chương trình phụ trợ của trình tạo mã của riêng bạn cho gcc?
- 20. Làm thế nào để bạn lập trình một thuộc tính?
- 21. Làm cách nào để làm cho chương trình tự khởi động lại? (Quá trình Linux)
- 22. Làm thế nào để tạo biểu đồ phụ thuộc chương trình cho chương trình C?
- 23. Chương trình 'man' dành cho Windows ở đâu (Chương trình mở trang người dùng UNIX)?
- 24. Cách tăng phân bổ bộ nhớ cho chương trình
- 25. Làm cách nào để lập trình gzip trong Jetty?
- 26. Làm cách nào để bắt đầu lập trình bằng Clojure trong Windows?
- 27. Làm cách nào để cài đặt chương trình Java?
- 28. Bạn làm cách nào để thêm tham chiếu lắp ráp theo chương trình?
- 29. Bạn sử dụng loại phương pháp nào để làm cho chương trình Cocoa dễ dàng hơn?
- 30. Làm thế nào để làm cho trình gỡ lỗi Valgrind bước qua một chương trình
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ó. –
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