Làm thế nào để lấy cây phụ thuộc cho một tạo tác?


123

dependency:treecó thể được sử dụng để xem cây phụ thuộc cho một dự án nhất định. Nhưng những gì tôi cần là xem cây phụ thuộc cho tạo tác của bên thứ ba.

Tôi đoán tôi có thể tạo một dự án trống, nhưng tôi đang tìm kiếm thứ gì đó dễ dàng hơn (tôi cần làm điều này đối với một số hiện vật).

Câu trả lời:


158

1) Sử dụng plugin phụ thuộc maven

Tạo một dự án đơn giản chỉ với pom.xml. Thêm phụ thuộc của bạn và chạy:

mvn dependency:tree

Thật không may, phụ thuộc mojo phải sử dụng pom.xml hoặc bạn gặp lỗi sau:

Không thể thực thi mojo: tree. Nó yêu cầu một dự án có pom.xml hiện có, nhưng bản dựng không sử dụng một.

2) Tìm pom.xml tạo tác của bạn trong kho lưu trữ trung tâm maven

Sự phụ thuộc được mô tả Trong pom.xml của tạo tác của bạn. Tìm nó bằng cách sử dụng cơ sở hạ tầng maven.

Truy cập http://search.maven.org/ và nhập groupId và tạo tác của bạn.

Hoặc bạn có thể truy cập http://repo1.maven.org/maven2/ và điều hướng đầu tiên bằng cách sử dụng plugin groupId, sau đó sử dụng ArtifactId và cuối cùng sử dụng phiên bản của nó.

Ví dụ: xem org.springframework: spring-core

3) Sử dụng plugin phụ thuộc maven chống lại tạo tác của bạn

Một phần của tạo tác phụ thuộc là một pom.xml. Điều đó xác định nó phụ thuộc. Và bạn có thể thực hiện phụ thuộc mvn: tree trên pom này.


3
Như tôi đã nói, tôi muốn tránh sự cần thiết để tạo ra một dự án
IttayD

bạn không 'tạo' một dự án, bạn chỉ đang tải xuống một tệp POM.
Sean Patrick Floyd

1
Bạn không cần phải tạo một dự án mới. Chỉ cần xem qua kho lưu trữ cục bộ của bạn và tìm pom.xml của
atifact

Điều này không hoạt động nếu mô-đun con không tồn tại. ví dụ: `` mvn -f ~ / .m2 / repository / org / jboss / cowrap / descriptors / cowrap-descriptors-cha / 2.0.0-alpha-10 / cowrap-descriptors-cha-2.0.0-alpha-10. pom depen dency: tree [INFO] Đang quét các dự án ... [ERROR] [ERROR] Một số sự cố đã gặp phải khi xử lý POM: [ERROR] Mô-đun con ~ / .m2 / repository / org / jboss / cowrap / descriptors / cowrap -descriptors-parent / 2.0.0-alpha-10 / api-base of ... / descriptors-parent / 2.0.0-alpha-10 / cowrap-descriptors-parent-2.0.0-alpha-10.pom thì không tồn tại ''
Ding-Yi Chen

1
Đối với dự án Maven nhiều mô-đun (tức là dự án có nhiều pom.xmltệp), bạn có thể gặp lỗi. Hãy thử mvn compile dependency:treesau đó.
izogfif

49

Nếu bạn bận tâm đến việc tạo một dự án mẫu và thêm phần phụ thuộc bên thứ ba của mình vào đó, thì bạn có thể chạy như sau để xem toàn bộ phân cấp của các phần phụ thuộc.

Bạn có thể tìm kiếm một tạo tác cụ thể bằng lệnh maven này:

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]

Theo tài liệu:

trong đó mỗi đoạn mẫu là tùy chọn và hỗ trợ các ký tự đại diện * đầy đủ và một phần. Một đoạn mẫu trống được coi như một ký tự đại diện ngầm định.

Hãy tưởng tượng bạn đang cố gắng tìm tệp jar 'log4j-1.2-api' giữa các mô-đun khác nhau của dự án của bạn:

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api

thêm thông tin có thể được tìm thấy ở đây .

Chỉnh sửa: Xin lưu ý rằng mặc dù có những ưu điểm của việc sử dụng tham số chi tiết , nhưng nó có thể không chính xác trong một số điều kiện. Vì nó sử dụng thuật toán Maven 2 và có thể cho kết quả sai khi sử dụng với Maven 3.


2
Gợi ý tuyệt vời! -Dverboseđủ để chỉ cho tôi đầy đủ cây tôi cần. Đường ống đầu ra để lesshoặc tương tự và thực hiện một tìm kiếm nhanh các công trình tuyệt vời nếu bạn không thể nhớ includescờ hoặc không muốn cung cấp đầy đủ hoặc ký tự đại diện groupId:)
jocull

Điều này không hoạt động nếu không có quà pom.xml có chứa đồ tạo tác bạn đang xem. Nếu không, bạn sẽ nhận được[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:tree (default-cli): Goal requires a project to execute but there is no POM in this directory (...). Please verify you invoked Maven from the correct directory. -> [Help 1]
Eisenknurr

-Dverbose đã không được chấp nhận trong plugin phụ thuộc, vì vậy điều này không hoạt động nữa trừ khi bạn đang sử dụng phiên bản khá cũ.
toolforger

6

Giải pháp là gọi cây phụ thuộc: cây với tệp pom.xml của tạo tác:

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree

Xem thêm Cách liệt kê các phụ thuộc bắc cầu của một tạo tác từ một kho lưu trữ?


Điều này có thể không hoạt động với các phần mềm được tải xuống từ kho lưu trữ trung tâm, vì 'phân phốiManagement.status'. Nó được thêm vào bởi kho lưu trữ trung tâm khi tải lên. Và điều này sẽ tạo ra sự phụ thuộc: xác thực không thành công cây trên tệp pom. Xem Problem.apache.org/jira/browse/MNG-3178
Arnaud Jeansen

2

Nếu bạn sử dụng phiên bản m2eclipse hiện tại (bạn nên sử dụng nếu sử dụng eclipse và maven):

Chọn mục menu

Navigate -> Open Maven POM

và nhập hiện vật bạn đang tìm kiếm.

Pom sẽ mở trong trình chỉnh sửa pom, từ đó bạn có thể chọn tab Dependency Hierarchyđể xem hệ thống phân cấp phụ thuộc (như tên cho thấy :-))


2
OK, sau đó câu trả lời này là dành cho những người dùng khác :-)
Sean Patrick Floyd

1

Nếu hiện vật của bạn không phải là phụ thuộc của một dự án nhất định, thì tốt nhất bạn nên sử dụng công cụ tìm kiếm kho lưu trữ . Nhiều người trong số họ mô tả các phụ thuộc của một tạo tác nhất định.


các hiện vật tôi đang quan tâm đến việc này là một phần của một sản phẩm công ty
IttayD

thì câu trả lời của amra là đặt cược tốt nhất của bạn, tôi e rằng.
Sean Patrick Floyd

@IttayD: Tại sao bạn không đề cập đến loại chi tiết quan trọng này trong câu hỏi của mình? Điều này sẽ giúp nhận được câu trả lời tốt hơn IMHO (và cũng có thể giúp người đọc không lãng phí thời gian của họ).
Pascal Thivent

0

Nếu bạn muốn có được biểu diễn đồ họa, có thể tìm kiếm được của cây phụ thuộc (bao gồm tất cả các mô-đun từ dự án của bạn, phụ thuộc bắc cầu và thông tin loại bỏ), hãy xem UpdateImpact: https://app.updateimpact.com (dịch vụ miễn phí).

Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển của trang web


0

Tôi biết bài viết này khá cũ, nhưng vẫn còn, nếu ai sử dụng IntelliJ muốn xem cây phụ thuộc trực tiếp trong IDE thì có thể cài đặt plugin Maven Helper Plugin .

Sau khi cài đặt, hãy mở pom.xml và bạn sẽ thấy tab Phân tích sự phụ thuộc như bên dưới. Nó cũng cung cấp tùy chọn để xem phụ thuộc chỉ bị xung đột và cũng như một cấu trúc cây.

nhập mô tả hình ảnh ở đây

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.