2012-02-29 23 views
91

Tôi có một POM mẹ trong một dự án Maven, với cấu trúc này:Install POM mẹ mà không cần xây dựng các module Child

   parent 
       | 
     --------------- 
     |    | 
     child1  child2 

Tôi muốn cài đặt POM của "cha mẹ" trong repo địa phương cho phép child1 thực hiện một số thay đổi mà tôi đã thực hiện trong dependencyManagement, nhưng Tôi không thể thực hiện "cài đặt sạch" thường xuyên"child2" bị hỏng và sẽ không được tạo.

Cách thích hợp để thực hiện việc này với maven (ngoài việc truy cập vào cha mẹ và nhận xét mô-đun "child2").

Trả lời

136

Sử dụng tùy chọn '-N' trong lệnh mvn.

Từ mvn -h:

-N, - không đệ quy Đừng recurse vào tiểu dự án

+1

Tùy chọn '-N' hoặc '--non-đệ quy' có nghĩa là không recurse vào các dự án phụ. –

25

Trong khi Guillaume thực sự là đúng và đó là lựa chọn đúng, tôi sẽ đích thân giới thiệu giữ cho cha mẹ của bạn như một mô-đun riêng biệt.

tôi tìm ra phương pháp tốt nhất cho các thừa kế để thực hiện như sau:

aggregator 
|- module1/ (extends parent) 
| |- pom.xml 
|- module2/ (extends parent) 
| |- pom.xml 
|- parent/ 
| |- pom.xml 
|- pom.xml 

Bằng cách này bạn luôn có thể cài đặt chỉ phụ huynh, với mvn clean install mà không tùy chọn bổ sung.

Bạn cũng có thể có cha mẹ bên ngoài trình tổng hợp để bạn có thể sử dụng lại nó giữa các dự án khác.

Có rất nhiều lợi ích để giữ cha mẹ và người tổng hợp là hai điều riêng biệt. Nhưng cuối cùng, bạn chọn những gì tốt nhất cho dự án/môi trường của bạn.

+0

Tôi gặp khó khăn với vấn đề này trong nhiều giờ, và thấy rằng một số dự án đang làm theo cách này, chẳng hạn như apache sling, JackRabbit và Artifactory. – accuya

+0

Nó bị cô lập mô-đun thừa kế maven (phụ thuộc, tài sản vv) từ xây dựng hàng loạt (mô-đun con). –

+3

Đây có phải là phương pháp hay nhất không? Bất kỳ blog hoặc khác trên phương pháp này? – ArtB

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