2011-06-10 68 views
4

我正在使用maven 3,並且想要將Map類型作爲參數傳入。將地圖作爲Maven插件參數

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

我傳遞在這個配置中:

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

據抱怨說,它缺少的參數的環境,是您

我目前有這個在我的魔力允許在maven中做到這一點?

回答

5

您是否嘗試刪除alias="environments"屬性?

另一點是,我不確定Maven是否會允許您設置String[]的Map作爲關鍵。我認爲它只會處理Map<String, String>the page here只顯示一個基本的Map示例)。

最後,你可以做的就是讓逗號分隔值,而不是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"}; 
}