【问题标题】:Having a map as a Maven plugin parameter将地图作为 Maven 插件参数
【发布时间】:2011-06-10 09:09:44
【问题描述】:

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

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

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

我在配置过程中传入这个:

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

抱怨缺少参数环境,你可以在maven中这样做吗?

【问题讨论】:

    标签: plugins parameters maven map


    【解决方案1】:

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

    另一点是我不确定 Maven 是否允许您将 String[] 的 Map 设置为键。我认为它只会处理Map&lt;String, String&gt;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"};
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 2023-01-12
      • 2020-10-04
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多