2010-03-04 29 views
5

Tôi là một plugin maven bao gồm một số mojos. Giả sử có myproject.FirstMojo khai báo là đầu tiên @goal và myproject.SecondMojo khai báo là @goal thứ haisử dụng maven @component để chèn mojo

những gì tôi muốn làm là tiêm mojo đầu tiên là tài sản của mojo thứ hai. Những gì tôi đã cố gắng là khai báo nó theo cách sau:

/** 
* @component role="myproject.FirstMojo" 
*/ 
private FirstMojo first; 

Thật không may, khi làm như vậy, tôi nhận được một lỗi Component descriptor cannot be found in the component repository:.

Tôi nên làm gì?

+0

@Lưu tại sao bạn nhấn mạnh vào thời điểm đó? Bạn đã cố gắng thêm nó làm câu trả lời và tôi đã gắn cờ nó. Bây giờ bạn muốn bình luận câu hỏi đó với điểm không có cấu trúc này và tôi chắc chắn sẽ gắn cờ nó. Nhưng tôi muốn hiểu điểm của bạn trước đây. – Riduidel

Trả lời

3

Bạn có thể sử dụng:

/** @component role="org.apache.maven.plugin.Mojo" role-hint="groupId:artifactId:version:second" */ 
private FirstMojo first; 

Lưu ý rằng họ có được trong các plugin tương tự, và bạn phải thay thế nhóm, tạo tác và phiên bản với giá trị của bạn. Điều này có thể sẽ liên quan đến việc lọc mã nguồn của bạn cho phiên bản chính xác, điều này làm cho nó trở nên phức tạp hơn một chút.

Tôi rất muốn giới thiệu tính năng bạn cần vào một lớp riêng biệt (có thể là thành phần Plexus nếu bạn cần truy cập vào một số thành phần trong đó) hoặc lớp cơ sở trừu tượng.

+0

Tôi thực sự sẽ làm theo lời khuyên của bạn và không dựa vào độ phân giải phụ thuộc của nexus, mà thay vào đó, hãy mã hóa để tổ chức tốt hơn. Cảm ơn anyway cho trả lời. – Riduidel

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