Tôi đang cố gắng tìm ra cách tổ chức nhiều (khoảng hơn 50) dự án maven2, để chúng có thể triển khai thành một kho lưu trữ mối quan hệ trung tâm. Khi sử dụng mvn deploy
mục tiêu, người ta cần chỉ định mục tiêu trong thẻ phân phối như sau:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Bây giờ, tôi không muốn mọi pom.xml (trong số 50+ đó) phải chứa khối này lặp đi lặp lại. Mặc dù đầu tiên của tôi sẽ là settings.xml
tệp, nhưng có vẻ như không thể (theo thiết kế) để xác định nó ở đó. Vì vậy, câu hỏi đầu tiên sẽ là, tại sao lại như vậy? Nếu có thể, tôi có thể chỉ định nó trong settings.xml trong bản phân phối maven2, bản phân phối này có thể được phân phối cho tất cả các nhà phát triển.
Giải pháp khả thi duy nhất mà tôi đã tìm thấy là tạo một dự án master-pom trong toàn tổ chức, có chứa các cài đặt này và làm cho tất cả các pom.xml khác phụ thuộc vào master-pom thông qua <parent>
thẻ này. Nhưng điều này trông hơi lạ trong các bản dựng nhiều mô-đun:
- master configuration POM (pm)
- Project 1 parent pom (p1 with module 1 and module 2 as modules)
- Project 1 module pom (with pm as parent)
- Project 2 module pom (with pm as parent)
Thông thường tôi đọc trong tất cả các tài liệu rằng các mô-đun pom nên sử dụng pom mẹ, chứ không phải một số khác. Nhưng sau khi đọc trang web maven về Inheritance v. Tổng hợp, người ta viết rằng nó thực sự có thể.
Một vấn đề tôi tìm thấy là với việc tạo trang web maven, có vẻ như có vấn đề với thiết lập này (các mô-đun không được liên kết chính xác nếu chúng không có tham chiếu ngược trực tiếp)
Vì vậy, đây có phải là một cách tiếp cận hợp lệ? Bất kỳ giải pháp khác, rõ ràng hơn, đơn giản hơn cho vấn đề?