2011-10-31 23 views
26

Tôi đang làm việc trên một dự án lớn với nhiều tệp pom.xml và tôi cần chỉ định tất cả các thư viện mà tôi sử dụng. Điều này có nghĩa rằng tôi cần đọc các tệp pom.xml đệ quy và nhận được groupId, artifactId, phạm vi và phiên bản. Tôi đã kiểm tra sự phụ thuộc của mvn: cây nhưng tôi không thể tìm thấy cách để in nó sang một tệp ở định dạng có thể đọc được. Tôi thấy appendOutput nhưng tôi thấy không có ví dụ về cách sử dụng nó trong cmd. Tôi đã thấy một số giải pháp được thực hiện trong Linux nhưng tôi chỉ có quyền truy cập vào Windows XP.Làm cách nào để nhận phụ thuộc Maven được in ra một tệp ở định dạng có thể đọc được?

Trả lời

53

Điều này có thể (ít nhất là bây giờ) được thực hiện với các tùy chọn dòng lệnh để phụ thuộc: plugin cây.

Hãy thử:

mvn dependency:tree -Doutput=/path/to/file 

tham khảo: Maven Dependency Plugin Page

Bạn chỉ được hỏi về định dạng "dễ đọc", nhưng bạn cũng có thể vượt qua các tham số -DoutputType với các tùy chọn khác nhau. Cũng lưu ý rằng phiên bản tôi đã cài đặt, tôi nhận được cảnh báo sau đây:

[WARNING] The parameter output is deprecated. Use outputFile instead. 

Vì vậy, xem xét thử nó với -DoutputFile =/path/to/file

Ngoài ra, tôi đã không thể có được - DaterputType paramater để cho tôi bất cứ điều gì khác hơn là văn bản mặc định, nhưng không có cơ hội để chơi xung quanh với nó. YMMV.

+1

-Dmdep.outputFile = – AndyS

+0

-Dmdep.outputFile =/path/to/file.txt đã hoạt động, tất cả các tùy chọn khác không – sloven

0

Bạn luôn có thể cài đặt MinGW and MSYS và sau đó sử dụng các ví dụ Linux sử dụng dependency:tree trong Windows

0

lẽ effective-pom (kết hợp với một số lệnh linux để lưu các tập tin) có thể là đủ cho nhu cầu của bạn.

3

Thêm plugin

<plugin> 
    <groupId>org.apache.servicemix.tooling</groupId> 
    <artifactId>depends-maven-plugin</artifactId> 
</plugin> 

tạo ra một tập tin classes/META-INF/maven/dependencies.properties với dự án phụ thuộc một cách dễ dàng parseable.

Ví dụ về sản lượng sản xuất:

# Project dependencies generated by the Apache ServiceMix Maven Plugin 
# Generated at: Mon Oct 10 17:43:00 CEST 2011 

groupId = my.group.name 
artifactId = my.artifact.name 
version = 0.0.1-SNAPSHOT 
my.group.name/my.artifact.name/version = 0.0.1-SNAPSHOT 

# dependencies 

junit/junit/version = 4.8 
junit/junit/type = jar 
junit/junit/scope = test 

org.easymock/easymock/version = 2.4 
org.easymock/easymock/type = jar 
org.easymock/easymock/scope = test 
4

On GNU/Linux Tôi chỉ sẽ làm mvn dependency:tree > myFile. Tuy nhiên, nếu bạn bị giới hạn chỉ dành cho Windows, tôi sẽ tìm cú pháp của Windows để truyền đầu ra của lệnh.

Theo this site (chỉ là kết quả hàng đầu từ Google) có vẻ như giao diện điều khiển của Windows cũng sử dụng dấu hiệu > để hướng luồng đầu ra tới tệp. Bạn có phiền không?

+3

Lệnh là như nhau cho Windows. –

+0

> đến từ POSIX. Trong cửa sổ, nó hoạt động tốt – kingoleg

1

Nếu bạn có nhiều mô-đun trong cùng một repo/dự án và muốn phụ thuộc của tất cả các mô-đun trong một tệp, để có thể phát triển và xây dựng một mô-đun khác. làm

$project_dir> mvn dependency:tree -DoutputFile=<absolute_path_to_file> -DappendOutput=true 

ví dụ

$project_dir> mvn dependency:tree -DoutputFile=`pwd`/mvn_dependency_tree.txt -DappendOutput=true 

Xem lựa chọn khác có sẵn tại https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

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