2013-02-07 25 views
5

Chúng tôi đang làm việc trên một dự án có một số tương tác Clojure-Java. Tại thời điểm này, chúng ta có một lớp đơn có nhiều sự phụ thuộc mà chúng ta đưa vào một thư viện người dùng trong Eclipse để phát triển, nhưng tất nhiên điều đó không giúp ích gì khi sử dụng Leiningen (2.x). Hầu hết các phụ thuộc của chúng tôi là độc quyền, vì vậy chúng không nằm trong kho lưu trữ ở đâu đó.Làm thế nào để bạn cấu hình các phụ thuộc độc quyền cho Leiningen?

Cách dễ nhất/phù hợp để thực hiện việc này là gì?

Tôi đã xem leiningen - how to add dependencies for local jars?, nhưng dường như đã lỗi thời?

Cập nhật: Vì vậy, tôi đã thực hiện một kho maven địa phương cho jar của tôi sau these instructionsthe lein deployment docs on github, và chỉnh sửa tập tin project.clj của tôi như thế này:

:dependencies [[...] 
       [usc "0.1.0"]] 
:repositories {"usc" "file://maven_repository"} 

đâu maven_repository là dưới thư mục dự án (do đó không sử dụng file:///). Khi tôi chạy "lein deps" - Tôi nhận được thông báo này:

Retrieving usc/usc/0.1.0/usc-0.1.0.pom from usc 
Could not transfer artifact usc:usc:pom:0.1.0 from/to usc (file://maven_repository): no supported algorithms found 
This could be due to a typo in :dependencies or network issues. 
Could not resolve dependencies 

Điều gì có nghĩa là "không tìm thấy thuật toán được hỗ trợ" và cách khắc phục?

Update2: Tìm thấy bit cuối cùng của câu trả lời here.

Trả lời

1

thêm chúng làm phụ thuộc vào dự án leiningen của bạn. Bạn có thể tạo tên và phiên bản. sau đó chạy lein deps và thông báo lỗi khi nó không tìm thấy nó sẽ cung cấp cho bạn lệnh chính xác để chạy để bạn có thể cài đặt jar để repo địa phương của bạn sau đó bạn có thể quyết định sử dụng repo dùng chung để đặt phụ thuộc của bạn ở đó.

0

YMMV nhưng tôi đã tìm thấy nó tốt nhất để sử dụng Maven thay vì Leiningen khi bạn đang làm việc với các dự án Polyglot Clojure/Java.

Đó chủ yếu là do các công cụ dựa trên Java (Eclipse, vv) hiểu các dự án Maven nhưng không thực sự hiểu các dự án Leiningen. Nó nhận được từ từ tốt hơn với các plugin Clojure Counterclockwise tuyệt vời, nhưng sự tích hợp vẫn chưa đủ tốt cho một dòng công việc dựa trên IDE hiệu quả.

Về phía lưu trữ của mọi thứ, tôi khuyên bạn nên thiết lập kho lưu trữ Maven được chia sẻ riêng tư. Bạn sẽ cần nó sớm hay muộn nếu bạn có kế hoạch quản lý một tập hợp phụ thuộc phức tạp trong nhóm của bạn: cũng có thể cắn viên đạn và hoàn thành nó ngay bây giờ.

1

@ Câu trả lời của Arthur rất tốt nhưng tôi đã nghĩ tôi sẽ ăn thịt thêm một chút vì nó để lại một số chi tiết còn thiếu.

  1. Luôn ghi nhớ Repeatability. Nếu bạn không làm cho nó để bất cứ ai cần truy cập vào các hiện vật có thể truy cập vào các hiện vật một cách tiêu chuẩn, bạn đang yêu cầu hỗ trợ địa ngục.

  2. documentation on deployment là một nơi tốt để tìm hiểu mọi thứ bạn cần biết về việc triển khai các tạo tác của bạn. Vì bạn đang ở trong một môi trường đa ngôn ngữ, bạn có thể không có lein chăm sóc triển khai tất cả các tạo phẩm của bạn, nhưng ít nhất bạn có thể lấy các jar cụ thể của bạn vào S3 hoặc thậm chí là chia sẻ tệp nếu bạn muốn. Phần còn lại của các tạo tác của bạn sẽ phải sử dụng Maven hoặc Ant trực tiếp để tải các tạo phẩm lên kho lưu trữ Maven trên máy chủ tệp hoặc S3.Tại công ty hiện tại của chúng tôi, chúng tôi đang sử dụng công nghệ tuyệt vời s3 wagon private để có hiệu quả tuyệt vời để lưu trữ các tạo phẩm nguồn đóng của chúng tôi và clojars để lưu trữ bất kỳ thứ gì mà chúng tôi có thể mở nguồn.

  3. Những gì @Arthur đang đề cập đến đang thực hiện lein install. Tất cả những gì có là cài đặt một bản sao của dự án hiện tại vào thư mục .m2 địa phương của bạn để các dự án khác trên hộp của bạn có thể tham khảo chúng. Trừ khi bạn đã định cấu hình cài đặt maven của mình để sử dụng thư mục chia sẻ cho thư mục .m2 (có thể không phải là ý tưởng tồi trong môi trường của bạn?), Điều này có nghĩa là bất kỳ ai kiểm tra dự án của bạn sẽ không thể xây dựng nó. Nếu bạn muốn đi tuyến đường này, bạn cần đặt nút localRepository trong $M2_HOME/conf/settings.xml làm vị trí được chia sẻ mà những người còn lại trong nhóm của bạn có quyền truy cập. Xem the docs để biết thêm thông tin.

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