Một dòng lệnh đơn giản để tải một tạo tác maven2 từ xa vào kho lưu trữ cục bộ?


122

Tôi có một thư viện mà tôi phân phối bằng maven 2. Người dùng điển hình của thư viện này không sử dụng maven để xây dựng các ứng dụng của họ, nhưng có thể hơi quen thuộc với maven và có thể đã cài đặt nó.

Tôi muốn ghi lại một lệnh một dòng "đơn giản" mà họ có thể sử dụng để tải các tạo phẩm của thư viện của tôi xuống cục bộ của họ ~/.m2/repositorymà không yêu cầu họ phải thiết lập một pom.xml để thực hiện việc đó.

Tôi nghĩ rằng có một cách để làm điều này, nhưng tôi dường như không thể tìm thấy nó sau khi xem qua tài liệu plugin install:install-filedependency. Tôi đã thử những thứ như:

mvn install:install-file -DrepositoryId=java.net -Durl=http://download.java.net/maven/2/ -Dfile=robo-guice-0.4-20091121.174618-1.jar -DpomFile=robo-guice-0.4-20091121.174618-1.pom -DgroupId=robo-guice -DartifactId=robo-guice -Dversion=0.4-SNAPSHOT -Dpackaging=jar

nhưng tôi nghĩ rằng tôi đang phát hiện sai cây vì có vẻ như plugin cài đặt được sử dụng để sao chép các tệp được xây dựng cục bộ vào kho lưu trữ cục bộ, thay vì tải các tạo tác từ xa vào kho lưu trữ cục bộ.

Đây là phần mềm mà tôi muốn cài đặt: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Điều này có thể sử dụng maven?



Câu trả lời:


168

Kể từ phiên bản 2.1 của Plugin phụ thuộc Maven , có một phụ thuộc: lấy mục tiêu cho mục đích này. Để đảm bảo rằng bạn đang sử dụng đúng phiên bản plugin, bạn cần sử dụng "tên đủ điều kiện":

mvn org.apache.maven.plugins: maven-dependency-plugin: 2.1: get \
    -DrepoUrl = http: //download.java.net/maven/2/ \
    -Dartifact = robo-guice: robo-guice: 0.4-SNAPSHOT

Rất hữu ích khi chỉ ra cách cài đặt plugin phụ thuộc.
Sergio Acosta

2
Pascal, bạn có thể cho tôi biết làm thế nào để xác định người dùng + mật khẩu để truy cập kho với? Thủ thuật với người dùng: password @ repourl không hoạt động.
Gábor Lipták

4
mục tiêu là tốt, nhưng làm cách nào để xác định thư mục đích mà tôi muốn sao chép tệp vào? (và tên tệp)
domi

9
@domi (câu trả lời muộn màng cho hậu thế): use "-Ddest = path / to / my.jar"; nếu không, nó chỉ được sao chép vào kho lưu trữ ~ / .m2 / cục bộ của bạn (làm cho nó giống như không có gì xảy ra). Xem maven.apache.org/plugins/maven-dependency-plugin/… = example => mvn org.apache.maven.plugins: maven-dependency-plugin: 2.5.1: get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant: ant: 1.8.1 -Ddest = ant-1.8.1.jar (kết quả: ant-1.8.1.jar trong thư mục hiện tại)
michael

3
Cảm ơn! Trong khi, trong liên kết tài liệu bạn đã đăng, có Deprecated. Use remoteRepositoriescho repoUrl. Vui lòng cập nhật câu trả lời có thể :)
Cuối tuần,

46

Cung cấp cho họ một pom nhỏ với các lọ này được liệt kê dưới dạng phụ thuộc và hướng dẫn để chạy:

mvn dependency:go-offline

Điều này sẽ kéo các phụ thuộc đến repo cục bộ.

Một giải pháp trực tiếp hơn là phụ thuộc: get , nhưng có rất nhiều đối số để nhập:

mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version

Ý tưởng hay, mặc dù một dòng lệnh họ có thể sao chép-dán sẽ dễ dàng hơn
emmby

Nếu tôi có thể nghĩ ra một cái, tôi sẽ đăng nó. Tôi không biết bất kỳ plugin nào thực hiện đúng những gì được gọi. Tôi biết làm thế nào để viết một ...
bmargulies

Các getmojo thực sự hy vọng -DrepoUrlcó mặt, không -DrepositoryUrl. Về các đối số để nhập, không có ma thuật, bạn cần phải cung cấp những thông tin này theo cách này hay cách khác.
Pascal Thivent

Trong lược đồ đầu tiên của tôi, người dùng cuối chỉ nhập ba ký tự: mvn. Tất cả các công việc đánh máy khác được thực hiện bởi op.
bmargulies

22

Kể từ phiên bản 2.4 của Plugin phụ thuộc Maven , bạn cũng có thể xác định điểm đến đích cho tạo tác bằng cách sử dụng cờ -Ddest. Nó phải trỏ tới tên tệp (không phải thư mục) cho cấu phần đích. Xem trang thông số để biết các thông số bổ sung có thể được sử dụng

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get \
    -DremoteRepositories=http://download.java.net/maven/2 \
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT \
    -Ddest=c:\temp\robo-guice.jar

2
Cảm ơn! -Dest được đánh dấu là không dùng nữa. Có một giải pháp mới mới?
Dimath

1
Sử dụng phụ thuộc: sao chép mục tiêu thay thế. maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
Eric B.

3
mục tiêu sao chép không sao chép các nhiệm vụ bắc cầu.
Renato
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.