我正在使用maven 3,我想传入一个Map类型作为参数。
我现在在我的魔力中有这个:
/**
* @parameter expression="${rep.env}" alias="environments"
* @required
*/
private Map<String,String[]> environments = null;
我在配置期间传递了这个:
<environments>
<Testing>
<param>
unit
</param>
</Testing>
</environments>
抱怨它缺少参数环境,您是否允许在maven中执行此操作?
答案 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"};
}