2012-04-16 22 views
15

Tôi muốn kiểm tra từ dòng lệnh nếu một tọa độ nhất định (groupId.artifactId.version) có thể được tìm thấy trong kho lưu trữ.Làm thế nào để xác định nếu một hiện vật Maven là trong repo của tôi từ dòng lệnh?

Nếu có thể, có thể thực hiện được với các tọa độ từng phần (ví dụ: artifactId.version) không? Tôi có thể chỉ định repo không?

Tôi không yêu cầu cách giải quyết - Tôi chỉ đơn giản là có thể bắt đầu tìm kiếm tập tin trong repo địa phương của tôi, hoặc nhập artifact trong một POM và chờ cho các lỗi, hoặc cài đặt Nexus và tìm kiếm trên giao diện người dùng ...

Đó là một điều thuận tiện - một lần trên CLI, nó sẽ là tốt đẹp để có thể kiểm tra một cách nhanh chóng.

+0

Cân nhắc thiết lập trình quản lý kho lưu trữ như Nexus hoặc Artifactory. Cả hai đều cung cấp giao diện đồ họa dựa trên web để tìm kiếm –

+1

@ MarkO'Connor Cảm ơn, tôi quen với nexus và sử dụng nó ở nơi làm việc, nhưng trên máy tính xách tay cá nhân của tôi tôi xem nó quá mức (với nhật thực, jenkins và trình duyệt chia RAM của tôi với nhau là) – kostja

+1

Đã hiểu, nhưng tôi thấy Nexus rất nhẹ về tài nguyên và thẳng thắn tôi không thể sống thiếu nó. Tôi thực hiện rất nhiều bản dựng khi bị ngắt kết nối khỏi mạng và tìm Nexus hoạt động tốt hơn dưới dạng bộ nhớ cache lưu trữ. –

Trả lời

16

Dưới đây là gần nhất tôi nghĩ rằng bạn sẽ nhận được:

mvn dependency:get -Dartifact=g:a:v -o -DrepoUrl=file://path/to/your/repo 

I'v thử nó, nó thành công nếu tạo tác (ví dụ "junit: junit: 4.8.2") nằm trong repo của bạn và thất bại nếu không, nhưng bạn phải viết đường dẫn đầy đủ đến repo địa phương của bạn dưới dạng một URL.

Điều quan trọng là sử dụng cờ -o (ngoại tuyến), vì nếu không thì maven sẽ luôn kiểm tra repo trung tâm.

+0

Làm việc như quảng cáo, mặc dù khá tẻ nhạt. Tôi đã có thể nghĩ rằng -o sẽ làm cho repoUrl dư thừa (nhưng đã cố gắng và nó không). Cảm ơn bạn. – kostja

+0

@kostja Tôi biết, với maven đôi khi các yêu cầu rõ ràng nhất là khó nhất để thực hiện :-( –

+2

+1. Một lưu ý: hiện tại, * repoUrl * không được dùng nữa, sử dụng [** remoteRepositories **] (http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html#remoteRepositories) để thay thế. – informatik01

1

Tôi chưa bao giờ nghe nói về điều gì đó như thế này. Có lẽ get mục tiêu của dependency plugin là bằng cách nào đó gần, nhưng nó vẫn không chính xác những gì bạn đang tìm kiếm. Tôi sợ không có thứ gì như vậy cả. Tuy nhiên, wrting riêng Maven plugin mà những gì bạn muốn có thể khá đơn giản. Cơ chế phân giải hiện vật mới trong Maven 3, được gọi là Aether, có API thực sự tốt và đơn giản.

Dù sao, nhìn vào Plugin phụ thuộc:

http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

+0

chỉ cho tôi đúng hướng, cảm ơn bạn. Tôi thực sự xem xét để viết một mvn plugin bản thân mình cho một phút mặc dù, đã buộc mình phải tập trung :) – kostja

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