2014-12-29 13 views
6

Tôi có nhiều mô-đun trong dự án của mình và chúng phụ thuộc vào nhau trực tiếp hoặc quá cảnh. Khi tôi maven xây dựng «Project A» một số nơi «Project D» được xây dựng tự động.Làm thế nào để tạo maven xây dựng mô-đun con với mô-đun chính?

Project A > Project B > Project C > Project D 

where > means Project B depends on Project A 

«Dự án D» pom snipeet là:

<project xmlns="..."> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myProduct</groupId> 
    <artifactId>build-MyProjectD</artifactId> 
    <name>MyProjectD</name> 
    ........ 
</project> 

Như xây dựng «Dự án A» tự động xây dựng «Dự án B», theo hiểu biết của tôi để làm cho điều này xảy ra ở đâu đó build-MyProjectD nên được bổ sung như phụ thuộc trong một trong các dự án này Project A > Project B > Project C nhưng tôi không tìm thấy bất kỳ tham chiếu nào về chuỗi build-MyProjectD dưới poms của các dự án này.

Bất kỳ ý tưởng nào có cách nào khác để tạo mô-đun con (trong trường hợp này là «Dự án D») mà không có sự hiện diện của trẻ em trong dự án thượng nguồn?

+0

bạn có thể sử dụng lò phản ứng sẽ chứa tất cả các dự án làm mô-đun. Điều này [bài viết] (http://blog.sonatype.com/2009/10/maven-tips-and-tricks-advanced-reactor-options/) có thể hữu ích. – Cuzz

Trả lời

13

Bạn cần tạo dự án tập hợp. Xem the link for more information on the aggregation concept.

Về cơ bản, bạn tạo một dự án cha mẹ có chứa một số "mô-đun". Khi xây dựng phụ huynh, các mô-đun cũng tự động được tạo.

Nếu bạn khai báo phụ thuộc giữa các mô-đun, Maven sẽ tự động xây dựng các mô-đun khác nhau theo thứ tự đúng để «Dự án A» phụ thuộc vào «Dự án B», «Dự án B» được xây dựng trước và sau đó «Dự án A» được xây dựng để tạo phẩm của nó có sẵn cho việc xây dựng các tạo phẩm thứ hai.

Xem thêm this question from the Maven's FAQ.

+0

Nếu chúng ta chỉ có hai mô-đun và một mô-đun phụ thuộc vào một mô-đun khác thì chúng ta có thể có mô-đun depebdent làm phụ thuộc. Đúng? Có nếu chúng tôi có nhiều mô-đun, tốt hơn hết là để lấy tổng hợp. Có phải không? –

+0

@scottmiles Tập hợp cho phép bạn nhóm một tập hợp các dự án hợp lý lại với nhau và để chúng xây dựng một lần thay vì phải xây dựng từng cái một. Bạn có thể có sự phụ thuộc giữa những dự án đó hay không. –

+0

@ Guillaume Polet Agreed Agoration là một cách. Một cách khác có thể thêm dự án con là phụ thuộc vào mô-đun mẹ, không phải nó sẽ tự động xây dựng tất cả các dự án con khi chúng ta xây dựng mô-đun Phụ huynh? –

6

Đối với dự án mẹ, Maven sẽ xây dựng tất cả các mô-đun con trong khi xây dựng dự án mẹ. Thêm các mô-đun vào cha mẹ của bạn. Giả sử A là dự án cha mẹ của bạn

<modules> 
    <module>projectB</module> 
    <module>projectC</module> 
    <module>projectD</module> 
    </modules> 

và trong module (B, C và D), thêm dự án A như cha mẹ (Điều này là không bắt buộc, Cảm ơn @Guillaume Polet)

<parent> 
    <groupId>foo.bar</groupId> 
    <artifactId>ProjectA</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

Vì vậy, nếu bạn xây dựng PROJECTA, nó sẽ xây dựng ProjectB, ProjectC và ProjectD. Ngoài ra maven là đủ thông minh để tìm ra thứ tự xây dựng chính xác cho B, C và D.

+2

Bước thứ hai là không cần thiết (nó được gọi là thừa kế). Chỉ khai báo các mô-đun được yêu cầu trong pom mẹ. –

+0

@GuillaumePolet Cảm ơn, đã không nhận thức được điều đó. Tôi đã cập nhật câu trả lời. – xyz

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