2013-03-20 43 views
11

Tôi đã gặp bên dưới "mẫu" cho maven mối quan hệ cha-con: Relation ship examplehttp://yuml.me/3f8dd366Maven cha-con mối quan hệ

Trong ví dụ này chúng ta có một mô-đun với 2 mô-đun phụ. Module này có một pom cha mẹ "cha mẹ để xây dựng các mô-đun" mà biết hai tiểu module như nó là trẻ em.

Các mô-đun phụ bao giờ không có ý tưởng rằng cha mẹ này biết họ và họ nghĩ cha mẹ của họ là một phụ huynh có tên "Cha mẹ cho quản lý phụ thuộc". Trong đó có các cấu hình chung như quản lý phụ thuộc, cấu hình plugin, tài sản chung, vv

Câu hỏi của tôi:
Đây có phải là một "tốt" mô hình? Có nghĩa là nó có những ưu điểm/nhược điểm như hình ảnh trực quan hơn của con < -> mối quan hệ cha mẹ

+0

bạn đã tìm thấy mẫu này ở đâu? Tôi tò mò muốn thảo luận về cách tiếp cận này trong nhóm của tôi. Thực ra, tôi nghĩ cha mẹ xây dựng khá kỳ lạ, tôi nghĩ mỗi mô-đun nên biết cách xây dựng bản thân và xây dựng dự án phải là thành phần của việc xây dựng từng mô-đun, nhưng nói với nhiều người chuyên gia hơn và đọc nguồn gốc của cách tiếp cận này có thể thay đổi suy nghĩ của tôi! – ThanksForAllTheFish

+0

Những mũi tên đó có vẻ thực sự khó hiểu (chỉ đường) và tôi không nghĩ bạn đang sử dụng "cha mẹ" một cách nhất quán. Trong thực tế, tôi biết rằng kể từ khi Maven không hỗ trợ đa thừa kế. Vui lòng xóa ý nghĩa của "cha mẹ". – djechlin

+0

@mardavi chúng tôi có nó trong nhiều dự án tại công ty – RonK

Trả lời

9

Một điều thú vị để nhìn vào là pom aggregator.

Đó là một pom nhóm các dự án theo mô-đun, mà không có mối quan hệ "cha-con". Tập hợp pom không có quản lý phụ thuộc. Nó chỉ quản lý việc xây dựng.

Có cả cha mẹ (p) và tập hợp pom là một tính năng khá mạnh mẽ của maven.

Bạn có thể tìm thêm thông tin here.

This maven page cũng có thông tin chi tiết có giá trị về cách thiết lập pom cho các dự án phức tạp.

+0

Trong nhóm của chúng tôi, chúng tôi thiết lập poms của chúng tôi như thế. Phân tách cha mẹ POM và tập hợp POM ngăn chặn ví dụ để có để cập nhật pom mẹ của mỗi mô-đun mỗi khi bạn thêm một mô-đun mới trong vòng đời xây dựng. Trong trường hợp tổng hợp POM của chúng tôi chỉ ở đây để dễ dàng thiết lập bản dựng (trong Jenkins) bằng cách định cấu hình dự án đa mô-đun và không phải từng mô-đun con. – YMomb

+0

Cảm ơn bạn đã làm rõ, sau khi đọc những trang này tôi nhận ra thuật ngữ của tôi là không chính xác – RonK

+0

Không có vấn đề gì. Tôi nghĩ rằng sự nhầm lẫn giữa pom cha và pom tổng hợp là khá phổ biến. Một số người có xu hướng sử dụng một pom cha mẹ khi một tập hợp nên được sử dụng. – phoenix7360

0

Điều này thực sự tốt để có một công ty cấu hình rộng mà không quan tâm đến nó là trẻ em và chứa những thứ như tài sản, dependecyManagement , kho, pluginManagement vv mà tất cả chúng sẽ thừa hưởng

có lẽ điều này có thể giúp bạn: Company wide parent pom

5

Hum ... Tôi nghĩ rằng tôi không đồng ý với các điều khoản trên ảnh của bạn. Dưới đây là cách tôi thấy điều này:

enter image description here

Bằng cách này để tổ chức mô-đun có thể gây nhầm lẫn cho nhiều developpers, nhưng nó là một cách hợp pháp để làm việc.

Dù sao, tôi không khuyên bạn nên sử dụng phương pháp này vì nó gây nhầm lẫn. Nhưng đôi khi, họ không phải là lựa chọn thay thế.

Khi sử dụng cấu hình này?

Một (hoặc nhiều) mô-đun phụ phụ đã có cha mẹ (tức là đã được phát triển trong một dự án khác nhưng bạn cần phải tạo lại).Lưu ý rằng <module> mục trong dự án đa mô-đun là một đường dẫn tương đối để bạn có thể có một cái gì đó như:

<modules> 
    <module>../../somedir/othermodule</module> 
    ... 
</modules> 

Khi có thể, tôi khuyên bạn nên sử dụng đa mô-đun cũng như phụ huynh vì:

  • ít gây nhầm lẫn
  • sạch và có thể đọc được <modules><parent> phần (không cần phải sử dụng đường dẫn tương đối xấu xí để xác định mẹ hoặcNếu bạn biết rằng nhật thực không thích các dự án phân cấp, nhưng đó là một vấn đề khác)
+0

Cảm ơn bạn, thuật ngữ của tôi đã thực sự bị nhầm lẫn. Bạn có thể vui lòng giải thích khi bạn sử dụng loại cấu hình này không? Ngoài ra, bạn có đề nghị thiết lập các dự án đa mô-đun như là phụ huynh của các mô-đun? – RonK

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