将地图作为Maven插件参数

jcw*_*jcw 4 parameters plugins map maven

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

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

/**
 * @parameter expression="${rep.env}" alias="environments"
 * @required
 */
private Map<String,String[]> environments = null;
Run Code Online (Sandbox Code Playgroud)

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

                <environments>
                    <Testing>
                        <param>
                            unit
                        </param>
                    </Testing>
                </environments>
Run Code Online (Sandbox Code Playgroud)

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

Rom*_*las 5

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

另一点是,我不确定Maven是否允许您设置Map String[]作为键.我认为它只会处理Map<String, String>(这里的页面只显示一个基本的Map示例).

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

<configuration>
    <environments>
        <one>a,b,c</one>
        <two>d</two>
    </environments>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后,当你必须处理你的值时,你只需将你的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"};
}
Run Code Online (Sandbox Code Playgroud)