2012-01-05 24 views
6

Tôi đang bắt đầu dự án lein new trong clojure và muốn sử dụng thư viện trích xuất bài viết goose. Thật không may, tôi không thể tìm thấy cái lọ của thư viện đó trên bất kỳ kho lưu trữ maven công khai nào, vì vậy tôi đã đặt nó vào kho lưu trữ maven cục bộ.Các phụ thuộc trong kho lưu trữ cục bộ maven với leiningen

Trong thư mục dự án, tôi đã sao chép jar ngỗng và pom.xml file của nó và đã làm

mkdir maven-repo 
mvn install:install-file -Dfile=goose-2.1.6.jar -DartifactId=goose -Dversion=2.1.6 \ 
    -DgroupId=local -Dpackaging=jar -DlocalRepositoryPath=maven-repo -DpomFile=pom.xml 

Và thêm vào phần sau đây để project.clj

:repositories {"local" ~(str (.toURI (java.io.File. "maven-repo")))} 

[local/goose "2.1.6"] trong :dependencies. Bây giờ khi tôi làm một lein deps, tôi nhận được tệp goose-2.1.6.jar được thêm vào thư mục lib, nhưng không phải là phụ thuộc của ngỗng. Chúng được liệt kê trong tập tin pom.xml của ngỗng.

Có cách nào để tôi có thể sửa lỗi này ngoài liệt kê phụ thuộc của ngỗng trong số project.clj của tôi không?

Trả lời

10

Bạn có thể sử dụng Lein-localrepo thay vì lệnh mvn dài: https://github.com/kumarshantanu/lein-localrepo

Cài đặt như thế này:

lein localrepo coords target/goose-2.1.6.jar | xargs lein localrepo install

Tuy nhiên, đó không thôi sẽ không giúp đỡ để cài đặt các tập tin POM trong repo. Bạn bổ sung nên chạy này:

cp pom.xml ~/.m2/repository/goose/goose/2.1.6/goose-2.1.6.pom

Lưu ý rằng trong ví dụ Goose này sẽ được cài đặt như groupId=goose, artifactId=goose. Bạn có thể ghi đè lên nếu bạn muốn, và có lẽ bạn nên.

+0

Có, tôi đã thấy dự án 'lien-localrepo' của bạn trước khi sử dụng lệnh mvn dài. Tôi đã chọn mvn vì nó chỉ là một lệnh :). Dù sao, tôi cũng sẽ thử phương pháp này. Bạn có thể cho tôi biết nếu điều này sẽ nhận được sự phụ thuộc của ngỗng khi tôi làm một 'lein deps'? –

+0

Tuyệt vời. Sử dụng phương pháp này, tôi nhận được sự phụ thuộc của ngỗng trong thư mục lib của tôi. Bạn có thể giải thích thêm một chút về sự khác biệt không? Cảm ơn một người đàn ông bó hoa :) –

+0

Ngoài ra, các lọ địa phương này phải được phiên bản như thế nào? Tất cả những gì tôi có thể nghĩ đến là thêm chúng vào một thư mục vendor và chạy các lệnh localrepo ở trên trên mỗi hệ thống mà dự án này được nhân bản. Có cách nào tốt hơn không? –

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