2009-11-02 30 views
8

Tôi đang viết một plugin Maven và tôi đang sử dụng các giá trị mặc định cho tất cả các thông số như thế này:Làm thế nào để cấu hình mặc định cho một tham số với nhiều giá trị cho một plugin Maven

/** 
* The file with the site structure. 
* 
* @parameter expression="${generateSite.siteFile}" default-value="${basedir}/src/oda/site.xml" 
*/ 
private File siteFile; 

Bây giờ tôi thêm một mới tham số là tập hợp. Có cách nào để đặt giá trị mặc định cho thông số như thông số sau không?

/** 
* A list of file/directory names to exclude in the processing. 
* 
* @parameter ???? 
*/ 
private Set<String> excludes; 

Trả lời

8

Để hiểu biết của tôi, đây thực sự là không thể, không có cách nào thực sự để xác định giá trị mặc định cho loại Parameter Với Nhiều giá trị (như Mảng, sưu tập, hoặc Maps), ít nhất là không parameter. Tôi đã phải làm điều này trong quá khứ và, khi đọc các chủ đề như array (or collecton) as a default-value of a mojo configuration parameter hoặc configuring a list as default value for a plugin parameter, tôi đã thiết lập mặc định theo phương pháp execute(), như Chris đã đề cập trong một nhận xét tới his answer (xem ví dụ: flexmojos:wrapper plugin sources và tham số parameters) .

+0

Đó là câu trả lời tôi nghi ngờ tôi sẽ nhận được. Tôi đã có một cái nhìn thoáng qua về mã nguồn Maven, nhưng sau đó có vẻ như tôi cũng cần nguồn Plexus - đó là nơi tôi dừng lại. Hãy giả sử bạn là đúng ;-) –

+0

Vâng, tôi vẫn không chắc chắn 100% nhưng flexmojos được phát triển bởi Sonatype, tôi đoán họ là đại diện của nhà nước của nghệ thuật và là một tài liệu tham khảo đáng tin cậy. –

-1

Tôi không nghĩ rằng Set được hỗ trợ một cách rõ ràng nhưng sau đây sẽ làm việc:

/** 
* A list of file/directory names to exclude in the processing. 
* 
* @parameter 
*/ 
private String[] myFiles; 

Sau đó, bạn có thể cấu hình nó sử dụng:

<myFiles> 
    <param>value1</param> 
    <param>value2</param> 
</myFiles> 

BTW này được lấy từ các Các loại tham số có nhiều giá trị phần trên this page cũng chi tiết các cách khác để cho phép các tham số có nhiều giá trị.

+0

Theo tài liệu bạn liên kết với chính mình, mọi tệp java.util.Collection sẽ hoạt động - đây là cách tôi đưa ra gói ban đầu. Nó chắc chắn làm việc với một Set theo cách bạn mô tả nó. Nhưng đó không phải là thiết lập các giá trị mặc định, nó là cấu hình bình thường cho từng dự án cụ thể. Tài liệu không đề cập đến bất cứ điều gì về việc thiết lập các giá trị mặc định trên các tham số đa giá trị (hoặc không thể). –

+1

Xin lỗi, tôi rõ ràng không đọc câu hỏi đúng cách! Tuy nhiên, tôi tin câu trả lời là không. Một vài năm trước, tôi đã tìm kiếm một câu trả lời tương tự trên danh sách gửi thư của Maven, và tôi chỉ tìm thấy câu trả lời "Tôi không nghĩ vậy". Đào xung quanh mã Plexus (mà Maven sử dụng một container) và điều này hỗ trợ câu trả lời đó. Ở những nơi chúng tôi muốn thực hiện điều này, chúng tôi đã chỉ thiết lập các giá trị mặc định trong phương thức execute(). – Chris

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