2009-11-02 3 views
8

Я пишу плагин Maven, и я использую значение по умолчанию для всех параметров, таких, как это:Как настроить параметры по умолчанию для параметра с несколькими значениями для плагина Maven

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

Теперь я добавляю новый параметр, являющийся коллекцией. Есть ли способ установить значения по умолчанию для параметра, такого как следующий?

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

ответ

8

Чтобы моего знания, это на самом деле не представляется возможным, нет реального способа указать значения по умолчанию для типов параметров с несколькими значениями (например, массивы, коллекция, или Карта), по крайней мере, как parameter. Я должен был сделать это в прошлом тоже и, начитавшись темы как array (or collecton) as a default-value of a mojo configuration parameter или configuring a list as default value for a plugin parameter, я заканчивал настройки по умолчанию в методе execute(), как Крис упоминается в комментарии к his answer (смотри, например, flexmojos:wrapper плагин sources и параметр parameters) ,

+0

Это ответ, который я подозревал, что получу. Я коротко взглянул на исходный код Maven, но потом мне показалось, что мне нужен источник Plexus - вот где я остановился. Давайте предположим, что вы правы ;-) –

+0

Ну, я до сих пор не уверен на 100%, но flexmojos разрабатывается Sonatype, я думаю, что они представляют собой современное состояние и являются надежной ссылкой. –

-1

Я не думаю, что набор явно поддерживается, но следующие будут работать:

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

Вы можете настроить его с помощью:

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

КСТАТИ это был взят из Типы параметров с несколькими значениями раздел на this page, который также описывает другие способы разрешения параметров с несколькими значениями.

+0

Согласно документации, вы ссылаетесь на себя, любой java.util.Collection должен работать - вот как я придумал первоначальный план. Это определенно работает с Set так, как вы его описываете. Но это не задание значений по умолчанию, это обычная конфигурация, специфичная для проекта. В документации ничего не говорится о настройке значений по умолчанию для многозначных параметров (или их невозможно). –

+1

Извините, я, очевидно, не прочитал вопрос правильно! Однако я считаю, что ответ отрицательный. Несколько лет назад я искал аналогичный ответ в списках рассылки Maven, и я нашел ответы «Я не думаю». Копая вокруг кода Plexus (который Maven использует контейнер), и это подтвердило этот ответ. В тех местах, где мы хотели это сделать, мы просто установили значения по умолчанию в методе execute(). – Chris