2012-12-19 33 views
5

Tôi có một dự án maven đa mô-đun và tôi muốn làm cho tất cả các mô-đun con của mình sử dụng maven-compiler-plugin được chỉ định trong thư mục gốc pom.xml. Tôi nên đặt tờ khai maven-compiler-plugin (trong thư mục gốc pom.xml): trong mục <plugins> hoặc trong mục <pluginManagement>? Câu hỏi cũng liên quan đến maven-release-plugin.Nơi cần được đặt khai báo maven-compiler-plugin: trong <plugins> hoặc <pluginManagement>?

Trả lời

12

Hai phần này (pluginspluginManagement) có các mục đích hơi khác nhau.

Đầu tiên (plugins) được sử dụng để chỉ định quy trình xây dựng dự án của bạn (và tất cả các dự án con kế thừa từ dự án mẹ). Nếu bạn bao gồm một số plugin vào phần này, nó sẽ được thực hiện trong mỗi dự án con bất kể loại của nó.

Mục thứ hai (pluginManagement) được sử dụng để chỉ định cài đặt plugin phổ biến cho tất cả các dự án được kế thừa từ dự án mẹ (ví dụ: phiên bản plugin và cấu hình).

Phát biểu của 2 plugin bạn đã đề cập. maven-compiler-plugin là một plugin mặc định sẽ được thực thi cho dù bạn có chỉ định hay không. Nó có ý nghĩa để bao gồm nó trong pluginManagement và xác định cấu hình của nó ở đó. Tuy nhiên, maven-release-plugin không bị ràng buộc với bất kỳ pha vòng đời nào. Vì vậy, nếu bạn muốn nó được thực hiện trong tất cả các dự án con của bạn, bạn sẽ phải thêm nó vào phần plugins.

+0

cảm ơn bạn đã trả lời rõ ràng. Bạn có thể giải thích cho tôi, tại sao 'maven-compiler-plugin' không được thực thi theo mặc định trái ngược với' maven-release-plugin'? Hoặc nơi tôi có thể xem danh sách các plugin được thực hiện theo mặc định trong các giai đoạn vòng đời? – MyTitle

+0

Bạn được chào đón. Danh sách các plugin mặc định và mục tiêu của chúng phụ thuộc vào bao bì dự án. Bạn có thể đọc thêm về nó [ở đây] (http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings) (trên thực tế, toàn bộ trang đáng đọc). –

+0

Còn về 'maven-surfire-plugin' thì sao? Sau khi giải thích của bạn, tôi nghĩ rằng nó nên được đặt bên trong pluginManagement, bởi vì nó bị ràng buộc để "thử nghiệm" giai đoạn của maven .. đó là sự thật? – MyTitle

0

Tùy thuộc vào những gì bạn đang theo dõi. Nếu bạn đưa chúng vào phần plugins, chúng sẽ thực thi cho tất cả POM ... bao gồm cả số gốc. Nếu bạn chỉ muốn các POM con thực thi các mục tiêu của plugin, thì bạn nên đặt chúng dưới pluginManagement. Tuy nhiên, trong trường hợp đó, bạn sẽ phải kích hoạt chúng trong mỗi POM con.

Điều đó nói rằng, điều dễ nhất cần làm là thử theo số plugins trước tiên. Nếu không có xây dựng thất bại, sau đó bạn tốt để đi. Nếu không, bạn sẽ cần phải di chuyển một số hoặc tất cả đến pluginManagement.

+0

Vì vậy, bên trong phần '' (trong trường hợp tệp pom.xml của root), chúng tôi có thể sửa đổi tất cả các trình cắm mà chúng tôi cần trong các mô-đun con (không rõ ràng trong các mô-đun con). Và bên trong '', chúng tôi chỉ khai báo các plugin _configuration_ (ví dụ: phiên bản) và chúng tôi vẫn cần khai báo chúng trong các mô-đun con? – MyTitle

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