2008-09-24 36 views

回答

0

我不確定你會如何做到這一點,但在我看來,這可能不是最好的設計決定。如果可能的話,你的目標應該是將你的Mojo從其他插件中解脫出來。

相反,我會建議使用自定義屬性來分解單獨插件配置中的任何重複。

您可以通過使用屬性部分設置在你的POM中自定義屬性「富」:

<project> 
    ... 
    <properties> 
    <foo>value</foo> 
    </properties> 
    ... 
</project> 

屬性foo是現在隨時隨地訪問POM中使用美元符號+大括號註釋:

<somePluginProperty>${foo}</somePluginProperty> 
3

使用屬性當然是一種方法,但不是很理想。它仍然需要用戶在整個pom的多個位置定義$ {propertyName}。我想讓我的插件不用修改用戶的pom,除了插件定義本身。

我看不到另一個MOJO的運行時屬性過緊耦合。如果另一個MOJO在構建層次結構的任何位置定義,我希望我的MOJO尊重相同的配置。

我目前的解決辦法是:

private Plugin lookupPlugin(String key) { 

    List plugins = getProject().getBuildPlugins(); 

    for (Iterator iterator = plugins.iterator(); iterator.hasNext();) { 
     Plugin plugin = (Plugin) iterator.next(); 
     if(key.equalsIgnoreCase(plugin.getKey())) { 
      return plugin; 
     } 
    } 
    return null; 
} 


/** 
* Extracts nested values from the given config object into a List. 
* 
* @param childname the name of the first subelement that contains the list 
* @param config the actual config object 
*/ 
private List extractNestedStrings(String childname, Xpp3Dom config) { 

    final Xpp3Dom subelement = config.getChild(childname); 
    if (subelement != null) { 
     List result = new LinkedList(); 
     final Xpp3Dom[] children = subelement.getChildren(); 
     for (int i = 0; i < children.length; i++) { 
      final Xpp3Dom child = children[i]; 
      result.add(child.getValue()); 
     } 
     getLog().info("Extracted strings: " + result); 
     return result; 
    } 

    return null; 
} 

這對一些小的工作建立我已經與測試。包括一個多模塊構建。

3

你可以使用以下步驟目前已在建設中使用的插件列表:

首先,你需要得到的Maven到當前項目注入到你的魔力,可以使用下面定義的類變量獲得這個。

/** 
* The maven project. 
* 
* @parameter expression="${project}" 
* @readonly 
*/ 
private MavenProject project; 

然後,您可以使用下面的內容獲取此版本中使用的插件列表。

mavenProject.getBuildPlugins() 

您可以遍歷此列表,直到找到想要從中提取配置的插件。

最後,您可以將配置作爲Xpp3Dom獲取。

plugin.getConfiguration() 

注意:如果你改變了其他插件的配置(而不僅僅是提取信息),它只會保持在當前階段,而不是後續階段改變。

+0

這與我上面的解決方案有何不同? 此外,getBuildPlugins是否只返回在pom.xml的部分中定義的插件,或者所有插件,甚至那些在配置文件等中定義的插件? – npellow 2009-07-12 09:47:39

相關問題