maven: Có thể ghi đè vị trí của kho lưu trữ cục bộ thông qua việc sử dụng tùy chọn dòng lệnh hoặc biến env không?


76

Hiện tại, chúng tôi chỉ định vị trí của kho lưu trữ cục bộ trong settings.xml. Có thể ghi đè cài đặt này thông qua dòng lệnh hoặc biến env để đôi khi tôi có thể sử dụng một vị trí thay thế không?



Tôi không hiểu tại sao điều này lại hữu ích cho đến bây giờ - nếu bạn đang làm việc trên một số nhánh (nhánh phát hành, nhánh thân) và cây nguồn phức tạp, việc cố gắng biên dịch hoạt động có thể là một cơn ác mộng nếu bạn chỉ đang sử dụng 1.0-SNAPSHOTlàm phiên bản của mình. Việc có các repos .m2 riêng biệt đã loại bỏ rất nhiều điều này.
Sridhar Sarnobat

Câu trả lời:


135

Bạn cần chỉ định maven.repo.localtham số để thực hiện việc này.

mvn package -Dmaven.repo.local=/alternate/repo/location

Đây là một câu hỏi SO liên quan.


4
Kho lưu trữ cục bộ phải là một đường dẫn tuyệt đối, maven.apache.org/guides/mini/guide-configuring-maven.html .
luka5z

@ luka5z: Cảm ơn vì tài liệu tham khảo quan trọng, nhưng tôi có thể nói với kinh nghiệm, con đường có thể tương đối cho --define maven.repo.local=local/repo/here. Có lẽ đường dẫn tuyệt đối chỉ được yêu cầu cho settings.xml?
kevinarpe

@Raghuram: câu trả lời hoàn hảo
Gaurav

17

Sử dụng cài đặt localRepository trong tệp settings.xml của bạn. Thí dụ:

<settings>
  <localRepository>/repo</localRepository>
  ...
</settings>

Xem ở đây để biết thêm thông tin.

Bạn cũng có thể đặt kho lưu trữ thông qua dòng lệnh sử dụng "-Dmaven.repo.local =" chẳng hạn như:

mvn -U clean install -Dmaven.repo.local=C:\tmp

1
Chúng tôi đã thực hiện nó trong settings.xml của chúng tôi. Tôi muốn ghi đè lên nó khi tôi gọi maven trong một vỏ
Anthony Kông

1
Nếu maven đang sử dụng settings.xml đó, ngay cả khi bạn gọi nó từ shell, nó sẽ chọn cài đặt đó. Rất phổ biến người dùng windows cần đặt điều đó do khoảng trống trong thư mục chính của họ "c: \ Documents and settings \ blah"
Michael

1
Vừa chạy thử nghiệm bằng cách sử dụng "<localRepository> / Users / michael / Desktop / repository </localRepository>" trong tệp settings.xml của tôi. Và bây giờ khi tôi xây dựng bất kỳ thứ gì từ dòng lệnh (hoặc ide), nó sẽ đặt các tạo tác ở đó.
Michael

1
Xin lỗi, đọc sai câu hỏi của bạn. Câu trả lời trên là chính xác. Bạn có thể sử dụng tùy chọn "-Dmaven.repo.local = / alternate / repo / location" trên các lệnh.
Michael
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.