Наличие карты в качестве параметра плагина Maven - PullRequest
4 голосов
/ 10 июня 2011

Я использую Maven 3, и я хочу передать тип Map в качестве параметра.

У меня есть это в моем mojo в данный момент:

/**
 * @parameter expression="${rep.env}" alias="environments"
 * @required
 */
private Map<String,String[]> environments = null;

Я передаюэто во время конфигурации:

                <environments>
                    <Testing>
                        <param>
                            unit
                        </param>
                    </Testing>
                </environments>

Он жалуется, что отсутствует среда параметров, разрешено ли вам делать это в maven?

1 Ответ

5 голосов
/ 10 июня 2011

Вы пытались просто удалить атрибут alias="environments"?

Другой момент заключается в том, что я не уверен, что Maven позволит вам установить карту String[] в качестве ключа. Я думаю, что это будет иметь дело только с Map<String, String> ( страница здесь показывает только базовый пример карты).

В конечном итоге вы можете разрешить использование значения через запятую вместо String[]:

<configuration>
    <environments>
        <one>a,b,c</one>
        <two>d</two>
    </environments>
</configuration>

и затем, когда вам приходится иметь дело со своими значениями, вы просто разделяете свою строку, чтобы получить массив строк (вы можете использовать Apache Commons-lang StringUtils , чтобы сделать это легко):

/**
 * @parameter expression="${rep.env}"
 * @required
 */
private Map<String, String> environments = null;

public void foo() {
    String[] values = StringUtils.split(environments.get("one"), ',');
    // values == {"a", "b", "c"};
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...