2010-03-24 28 views
17

Tôi muốn chia nhỏ các giai đoạn nhất định trong chu kỳ sống của maven thành các giai đoạn phụ. Tôi muốn kiểm soát dòng chảy thực hiện từ một pha này sang giai đoạn khác, giống như phụ thuộc ant.Làm cách nào để thực thi một số trình bổ sung maven trong một giai đoạn và thiết lập thứ tự thực hiện tương ứng?

Ví dụ: tôi muốn sử dụng plugin NSIS để gói dự án của tôi vào trình cài đặt ở giai đoạn gói, SAU KHI dự án của tôi đã được đóng gói thành tệp chiến tranh. Tôi muốn làm tất cả những gì ở giai đoạn gói.

Điều đó có khả thi không?

Cảm ơn

+0

Không Maven thực hiện các mục tiêu plugin liên kết với cùng một giai đoạn vòng đời theo thứ tự chúng được liệt kê trong pom? Chỉ cần đoán, có thể là giá trị thử nghiệm ... –

+0

Không biết ... Tôi sẽ thử nó – Yaneeve

Trả lời

13

Plugins ràng buộc với giai đoạn cùng nên thực hiện theo thứ tự như chúng được liệt kê trong POM. Trong một số trường hợp nhất định (ví dụ: nếu bạn liên kết cùng một plugin với giai đoạn hai lần, như plugin antrun), điều này có thể không xảy ra nhưng đây là lỗi (xem MNG-2258 và sự cố liên quan MNG-3719).

+0

nhưng nếu bạn chỉ định chúng trong các khối không liên quan, chẳng hạn như khối xây dựng bình thường so với khối xây dựng của một khối tiểu sử? Có thể có một số plugin trong khối tiểu sử sẽ chạy sau các plugin trong khối plugin, nhưng những người khác có thể không. – Matthias

+9

Điều này không xảy ra (ít nhất là trong maven 3.0.4). Tôi có hai plugin với thực thi ràng buộc để tạo ra nguồn, một trong những liệt kê đầu tiên trong danh sách khoảng 6 plugin và khác được liệt kê cuối cùng. Tuy nhiên, một trong những liệt kê cuối cùng (mà phụ thuộc vào một trong những liệt kê đầu tiên) luôn luôn thực hiện đầu tiên. – matt5784

+0

Đồng ý với matt5784, điều này gây phiền toái: ( –

6

Tôi gặp vấn đề tương tự. xem How to perform ordered tasks in Maven2 build. vì một số lý do mà các mục tiêu khác nhau liên kết với một pha được lưu trữ trong một bản đồ băm hoặc cấu trúc không theo thứ tự khác làm cho thứ tự thực hiện ngẫu nhiên. giải pháp của tôi là để truyền bá các nhiệm vụ cho các giai đoạn khác nhau nhưng tôi không nghĩ rằng có nhiều sence cho nó trong trường hợp của bạn (bao bì nsis không phải là trước khi thử nghiệm tích hợp). bạn có thể làm một trong các cách sau:

1) thử vận ​​may của bạn và xem nếu Maven chosses trật tự phù hợp với bạn (bạn có thể cố gắng mà đã)

2) sử dụng plugin độc lập - chạy mục tiêu bên ngoài vòng đời. một cái gì đó như: mvn gói org.codehaus.mojo: nsis-maven-plugin: 1.0: biên dịch.

3) tách chúng thành mô-đun: có pom mẹ chứa hai mô-đun phụ, một - dự án chiến tranh của bạn và một cho dự án nsis.

4) sử dụng vòng đời tùy chỉnh bằng cách thay đổi loại, trong trường hợp của bạn, bạn có thể sử dụng "exe". điều này được thực hiện bằng cách sử dụng tiện ích mở rộng plugin tùy chỉnh (guide to using extension)

5) sử dụng jetspeed-mvn-maven-plugin. Tôi chưa bao giờ sử dụng nó nhưng nó có vẻ phù hợp với nhu cầu của bạn.

hy vọng điều này mang lại cho bạn những ý tưởng mới.

Ronen

+0

Cảm ơn, nhưng ngoại trừ một số "kinks" với vòng đời mặc định @Pascal là đúng – Yaneeve

+1

những người không có "kinks". thực sự nếu bạn hỏi những người Maven họ sẽ nói với bạn rằng số 3 là phù hợp nhất với "Maven way", đó là việc tách các module và khi bạn nghĩ về nó, nó tạo ra rất nhiều ý nghĩa cho việc tạo ra một ứng dụng web và một dự án trình cài đặt là hai thứ riêng biệt. – rperez

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