15
A
回答
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()
注意:如果你改變了其他插件的配置(而不僅僅是提取信息),它只會保持在當前階段,而不是後續階段改變。
相關問題
- 1. 從mojo修改maven插件配置的正確方法
- 2. maven自定義插件配置
- 3. CakePHP插件 - 實現插件配置文件的最佳方式?
- 4. 自動執行自定義Maven插件
- 5. 如何爲maven插件定義默認的mojo
- 6. 配置Maven使用自定義的插件目標
- 7. 什麼是訪問Coldfusion的自定義函數的最佳方式
- 8. 使用Google Closure定義配置對象的最佳方式
- 9. 讓用戶擁有自定義配置文件的最佳方式 - 如about.me配置文件
- 10. 爲什麼我的Maven Mojo單獨運行時會失去其配置屬性?
- 11. 從插件的配置文件訪問CI的配置文件
- 12. 如何將maven命令行mojo調用的配置從全局插件配置中分離出來?
- 13. 在Drupal中,自定義模塊是訪問外部API的最佳方式嗎?
- 14. 從VBA訪問串行端口的最佳方式是什麼?
- 15. 在Flex中添加自定義配置變量的最佳方式是什麼?
- 16. 如何爲SureFire Maven插件指定JUnit自定義運行器?
- 17. 配置從Maven插件
- 18. Maven插件MOJO API中的參數
- 19. 從XIB加載自定義單元格的最佳方式
- 20. 定義自定義授權策略的最佳方式
- 21. Maven Assembly:配置文件最佳實踐
- 22. Maven:將自定義外部JAR鏈接到我的項目的最佳方式?
- 23. 這是訪問webservice的最佳方式
- 24. Mojo配置的自定義類型轉換器?
- 25. 搖籃Maven插件生成自定義配置
- 26. 運行自定義插件jQuery的
- 27. 無法從web.config訪問自定義配置文件屬性?
- 28. 從配置文件獲取值的最佳方式是什麼?
- 29. 最佳匹配額定配對的最佳方式是什麼?
- 30. 量角器:等待自定義事件的最佳方式
這與我上面的解決方案有何不同? 此外,getBuildPlugins是否只返回在pom.xml的部分中定義的插件,或者所有插件,甚至那些在配置文件等中定義的插件? –
npellow
2009-07-12 09:47:39