Làm thế nào để có được vị trí repo cục bộ của Maven?


81

Có cách nào để lấy vị trí repo cục bộ của Maven không?

Sử dụng lệnh sau, bạn có thể buộc Maven sử dụng một tệp cài đặt cụ thể:

 mvn -s < path to settings file >

Tôi biết bạn có thể chỉnh sửa settings.xmltệp để đặt vị trí kho lưu trữ, nhưng tôi có thể lấy giá trị mặc định hiện tại bằng một số lệnh Maven không?

Câu trả lời:


121

Nếu bạn chỉ muốn repo cục bộ, hãy thử điều này:

mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]'

BIÊN TẬP

Tôi sẽ xem lại điều này sau nhiều năm vì các phiên bản gần đây của plugin trợ giúp Maven đã giới thiệu một tham số hữu ích cho evaluatemục tiêu được gọi là forceStdoutcho phép chúng tôi loại bỏ nhu cầu grep đầu ra:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

2
Tôi nghĩ rằng bạn dự định | grep -v '\[INFO\]' Regex của bạn có tác dụng phụ khó chịu.
kubanczyk

cả hai phiên bản làm việc cho tôi, bạn có nghĩa là gì bởi "tác dụng phụ khó chịu"?
adutra

3
@adutra Regex của bạn chỉ định một nhóm khớp bao gồm các ký tự viết hoa I, N, F và O. Vì vậy, nó sẽ khớp với một trong các dòng đó: INFO, OFNI, I, F, N, v.v. Hãy thửecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr

3
Điều này sẽ không hoạt động nếu bạn có cảnh báo maven hoặc nó tải xuống các phụ thuộc. Grep sau, tìm kiếm đường dẫn tệp tuyệt đối, sẽ hoạt động trên cả unix và windows:mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
SiXoS

@SiXoS của bạn cũng không hoạt động, trong trường hợp của tôi, mvn đã đưa ra các cảnh báo khi [INFO] Đang quét các dự án .... và không khớp với bất kỳ thứ gì khi đầu ra được gắn vào.
Sajuuk

50

Có, bạn có thể lấy nó bằng -Xhoặc --debugtùy chọn, ví dụ:mvn -X

...
[DEBUG] Reading global settings from C:\Maven\conf\settings.xml
[DEBUG] Reading user settings from C:\segphault\.m2\settings.xml
[DEBUG] Using local repository at C:\Repo
...

38

Plugin Trợ giúp Maven sẽ hiển thị cài đặt cục bộ, bao gồm đường dẫn kho lưu trữ cục bộ.

Bạn muốn lệnh:

mvn help:effective-settings

Đầu ra sẽ hiển thị các cài đặt ở định dạng XML. Tìm phần tử localRepository:

<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>

có vẻ như nếu nó ném cảnh báo, đầu ra sẽ không ở định dạng XML.
Sajuuk

19

Trong thời gian chờ đợi, bạn có thể làm điều đó theo cách đơn giản hơn:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

Bạn cũng có thể trực tiếp sử dụng nó để gán một biến shell như sau:

RESULT=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)

Lưu ý quan trọng: Sử dụng phiên bản mới nhất của Maven và tất nhiên là phiên bản mới nhất của maven-help-plugin ...

Điều này sẽ chứa kết quả mà không có dòng mới, v.v.


Câu trả lời này phải là câu trả lời được chấp nhận vì nó cung cấp một giải pháp mà bạn tạo ra một kết quả rõ ràng hơn bất kỳ giải pháp nào khác được đề xuất cho đến nay.
Zartc

Điều này bị hỏng trên ít nhất một số nền tảng / cấu hình. Đối với tôi (fc 28, Maven 3.5.2), -q làm cho nó không mang lại đầu ra, mặc dù không có -q, thuộc tính ở đó, nhưng phải được bôi trơn.
Pawel Veselov,

5

Nó phải nằm trong thư mục /home/.m2, thư mục có thể bị ẩn. Vì vậy, bạn sẽ cần Ctrl + H để xem các thư mục ẩn.


5

Đối với người dùng windows

Thông thường nó trong: C:\Users\USER_NAME\.m2\repository.
Tuy nhiên, mvn help:effective-settingslệnh chắc chắn sẽ hiển thị đường dẫn cục bộ trong phản hồi xml.


0

Bạn có thể đạt được điều này bằng cách bật chế độ gỡ lỗi bằng cách sử dụng -Xtùy chọn và tìm ra dòng đề cập đến kho lưu trữ cục bộ đang được sử dụng.

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.