2010-03-08 30 views
8

Tôi có một dự án mô-đun đa mô-đun, được xây dựng thành công, tôi muốn xây dựng chỉ một của các mô-đun tôi có. Tôi sẽ làm như thế nào với profiles? Tôi có thể làm điều đó từ giao diện điều khiển theo hai cách, một cách là đi đến các mô-đun con và mvn package hoặc tôi có thể sử dụng lò phản ứng để xây dựng chỉ là một mô-đun.Cấu hình Maven cho mô-đun đơn

Tôi có thể làm điều tương tự với tiểu sử không? Bằng cách sửa đổi POM? Cảm ơn bạn

EDIT

Nếu không thể từ POM, tôi có thể làm điều đó từ settings.xml?

Trả lời

13

Để thực hiện điều này với cấu hình, bạn có thể sử dụng hai cấu hình, một <activeByDefault> với tất cả các mô-đun và một mô-đun khác chỉ với mô đun mong muốn. Một cái gì đó như thế này:

<profiles> 
    <profile> 
    <id>all</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <modules> 
     <module>module-1</module> 
     ... 
     <module>module-n</module> 
    </modules> 
    </profile> 
    <profile> 
    <id>module-2</id> 
    <modules> 
     <module>module-2</module> 
    </modules> 
    </profile> 
<profiles> 

Và sau đó gọi nó như thế này:

mvn -Pmodule-2 package 

Hai điều cần lưu ý ở đây:

  1. Bạn cần phải di chuyển <modules> từ POM trong một "mặc định "hồ sơ (vì <modules> từ tiểu sử chỉ là phụ gia, chúng không ẩn các mô-đun được khai báo trong POM).
  2. Bằng cách đánh dấu nó là <activeByDefault>, cấu hình "mặc định" sẽ được chọn nếu không có gì khác đang hoạt động nhưng bị hủy kích hoạt nếu có thứ khác.

Một thậm chí có thể parametrize tên của các mô-đun và vượt qua nó như bất động sản:

<profiles> 
    ... 
    <profile> 
    <id>module-x</id> 
    <activation> 
     <property> 
     <name>module-name</name> 
     </property> 
    </activation> 
    <modules> 
     <module>${module-name}</module> 
    </modules> 
    </profile> 
<profiles> 

Và gọi maven như thế này:

mvn -Dmodule-name=module-2 package 

Nhưng đây là một thực hiện IMHO nghèo, tôi thích các tùy chọn lò phản ứng "cao cấp" -pl (ít xml, nhiều năng lượng và linh hoạt hơn):

mvn -pl module-2 package 
+0

@Pascal Thivent Chỉ cần rực rỡ .. Tôi không biết phải nói gì .. cảm ơn bạn m8, bạn không ai sánh kịp khi nói đến maven – ant

+0

Tôi đồng ý @Pascal là một thiên tài maven. Tôi cũng sẽ thêm tiếng nói rằng nó sạch hơn để sử dụng một lò phản ứng xây dựng hơn cấu hình nhiều hồ sơ. –

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