2012-06-25 30 views
6

Là một nhà tư vấn, tôi có nhiều khách hàng mà tôi đang làm việc cho. Mỗi máy khách sử dụng kho lưu trữ Maven nội bộ của riêng mình, cũng được thiết lập để phản chiếu các kho lưu trữ trung tâm và các kho lưu trữ bên ngoài khác. Tôi cần phải cấu hình cài đặt maven của tôi trên máy tính xách tay của tôi để khi tôi đang làm việc cho một khách hàng, nó sử dụng kho lưu trữ nội bộ của họ cho tất cả mọi thứ.Nhiều gương Maven cho cùng một kho lưu trữ

Tôi đã nghĩ tôi có thể sử dụng các cấu hình để xử lý việc này, nhưng không thể thay đổi cài đặt gương cho mỗi cấu hình.

Có ai có đề xuất về cách tiếp cận cấu hình maven này không?

Lưu ý: Câu hỏi tương tự ở đây: How do I configure maven to access maven central if nexus server is down?, nhưng câu hỏi đó đề cập đến việc chuyển đổi giữa Trung tâm đến từ gương hay không. Những gì tôi cần là cho Trung ương (và những người khác) đến từ một tấm gương hoặc một cái khác dựa trên một số thuộc tính/thiết lập/biến số.

+2

Cuối cùng tôi đã tìm thấy một câu hỏi khác đã cho tôi đủ thông tin chi tiết để trả lời câu hỏi của riêng tôi. Tham khảo: [link] (http://stackoverflow.com/a/1385744/1481288) Vì vậy, những gì tôi đã làm là thiết lập định nghĩa gương bằng cách sử dụng $ {M2_MIRROR} trong URL và sau đó tôi có thể đặt một biến môi trường để trỏ đến kho lưu trữ nội bộ chính xác tùy thuộc vào máy khách (hoặc dự án nội bộ) mà tôi đang làm việc. – MBru

+0

+1 câu hỏi rất thú vị! Tôi đang ở trong trường hợp tương tự, và tôi đã tự hỏi làm thế nào để đối phó với một vấn đề như vậy ... +1 –

Trả lời

0

Tôi cũng có một yêu cầu rất giống trong dự án của mình. Tôi đã tạo hai tệp settings.xml riêng biệt, đặt tên chúng là settings_one.xmlsettings_two.xml và lưu chúng trong MAVEN_HOME. Tùy thuộc vào tập tin tôi cần, tôi có một kịch bản nhỏ (một tập tin dơi trên cửa sổ) ghi đè lên tập tin settings.xml hiện có với một trong hai tập tin cài đặt.

del C:\Users\<username>\.m2\settings.xml 
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml 
+1

Tôi không muốn phải quản lý nhiều tập tin cài đặt. Tôi nghĩ rằng tôi đã tìm ra một giải pháp có hiệu quả đối với tôi. Các đầu mối là trong một câu hỏi khác mà tôi đã không tìm thấy khi ban đầu nghiên cứu này. Xem bình luận của tôi trong OP – MBru

+0

Hoàn toàn thuyết phục :) – thk

0

Giải pháp đơn giản nhất tôi có thể đề nghị là cài đặt git và cam kết bạn .m2/settings.xml (tất nhiên bỏ qua các kho riêng của mình qua .gitignore) vào git và làm cho chi nhánh phù hợp cho khách hàng. Thay đổi cài đặt sẽ được thực hiện bởi:

git checkout CUSTOMER_BRANCH 

và hơn nữa bất kỳ thay đổi nào được theo dõi bởi SCM.

2

Tạo hai bí danh shell:

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml" 
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml" 

Các "-s" tùy chọn là tiện dụng cho tuyên bố một cách rõ ràng mà tập tin cài đặt môi trường để sử dụng. Chúng tôi sử dụng cơ chế này trên máy chủ xây dựng được chia sẻ của chúng tôi để đảm bảo mỗi dự án xây dựng được phân lập.

Rõ ràng là trên cửa sổ bạn có thể tạo một tập hợp các tệp lô.

+0

Điều này có vẻ như là một cải tiến tốt về giải pháp trao đổi các tập tin cài đặt. Mặc dù vậy, tôi nghĩ rằng tôi thích giải pháp biến môi trường tốt nhất, trong đó giá trị được sử dụng trong các thiết lập gương của tệp settings.xml duy nhất của tôi. – MBru

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