2012-02-06 40 views
12

Kịch bản:Làm thế nào để biên dịch phụ thuộc vào maven?

Tôi có một dự án cấp A và trong A, hai dự án con B và C do các nhà phát triển khác nhau thực hiện, nhưng họ đồng ý về trừu tượng thông qua các giao diện chung.

B phụ thuộc vào C (phụ thuộc). Trong pom B của tôi thêm

<dependency> .. details of project C..</dependency> . 

Việc làm này, maven chèn phụ thuộc tốt ngoại trừ việc dự án C không được biên dịch lại.

Tôi muốn dự án C để tự động lập lại mỗi khi tôi biên dịch B.

Trả lời

17

Nếu bạn muốn xây dựng B và tự động xây dựng phụ thuộc của nó, bạn có thể sử dụng các tùy chọn nâng cao của lò phản ứng maven như –-so-make-dependents.

mvn clean install –-projects B –-also-make 

Điều đó sẽ biên dịch tất cả các mô-đun phụ của A mà B phụ thuộc vào. Có một bài đăng hữu ích trên blog sonatype về các tùy chọn nâng cao của lò phản ứng maven. http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/

+0

Chính xác những gì tôi cần! – SQC

+0

Lưu ý: sử dụng '--also make' NOT' --also-make-dependents'. Cách thứ hai là tạo ra bất kỳ thứ gì tùy thuộc vào B trong khi trước đây là làm bất cứ thứ gì mà B phụ thuộc vào: https://maven.apache.org/guides/mini/guide-multiple-modules.html –

+0

@SQC: Có phải không có thể xây dựng một tập con các phụ thuộc? –

8

Danh sách các dự án B và C là mô-đun trong pom của dự án A. Bây giờ khi bạn xây dựng dự án A, nó nên xây dựng dự án B và C tự động và theo đúng thứ tự.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
          http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>multi</groupId> 
    <artifactId>A</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 

    <modules> 
     <module>B</module> 
     <module>C</module> 
    </modules> 
</project> 

Xem this để biết ví dụ về dự án mô-đun đa mô-đun.

+1

Tôi có một pom tương tự như thế này. Đây không phải là những gì tôi muốn mặc dù tôi không muốn biên dịch lại tất cả các dự án từ thư mục cấp cao nhất. (Giả sử có nhiều mô-đun C, D, E, F và B chỉ phụ thuộc vào một số mô-đun C và E). – SQC

+0

+1 để được trợ giúp. Pom này khá hữu ích trong nhiều tình huống, điều này là một chút khác nhau mặc dù. – SQC

0

Tôi thường sử dụng plugin lò phản ứng Maven để xử lý các loại sự cố này. Plugin này thậm chí bao gồm các yêu cầu khó khăn mà một dự án phức tạp với nhiều mô-đun phụ trong một cấu trúc phức tạp có thể có. Xem link để biết các ví dụ.

Đối với tình huống trên, sử dụng

mvn reactor:make -Dmake.folders=B 

để xây dựng B và C (và tất cả phụ thuộc của B nếu có).

Hy vọng điều này hữu ích.

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