将地图作为Maven插件参数

时间:2011-06-10 09:09:45

标签: plugins parameters maven map

我正在使用maven 3,我想传入一个Map类型作为参数。

我现在在我的魔力中有这个:

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

我在配置期间传递了这个:

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

抱怨它缺少参数环境,您是否允许在maven中执行此操作?

1 个答案:

答案 0 :(得分:5)

您是否尝试删除alias="environments"属性?

另一点是,我不确定Maven是否允许您将String[]的地图设置为关键字。我认为它只会处理Map<String, String>the page here只显示一个基本的地图示例。)

最后,您可以做的是允许以逗号分隔的值而不是String[]

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

然后,当你必须处理你的值时,你只需将你的String拆分成一个String数组(你可以使用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"};
}