你能否将Maven pom.xml文件重构为可重用的XML片段?

Mat*_*ail 8 xml refactoring maven-2 maven-plugin

在Maven中,是否可以将通常重复的片段重构为可重用的"库"(插件)?我意识到我可以编写自己的插件,但是我想重用的功能通常已经表示为pom.xml中的片段,我的自然倾向是重用机制应该将这些片段保存 XML.

举个例子我一直在使用一个过程(这里部分描述)从Jersey/JAX-RS源代码生成WADL文件,然后从该WADL和源代码自己的Javadoc生成开发人员文档.该页面上的过程描述了两个插件的执行,我使用第三个插件(org.codehaus.mojo:exec-xsltproc)和我自己的XSL文件将WADL转换为HTML.

我在几个Maven项目中使用过这个程序.样板文件有100行XML.项目之间的变化只是相关源代码的包名称(com.example.myapp.rest在链接的样板中).因此,无法将其移动到父pom或任何其他不允许参数化的机制.

我想要的是聚合,模板输出或以其他方式将这100行(和一个XST文件)重构为一个公共位置.我意识到可重用的maven执行是通过Maven插件提供的.理想情况下,我不必编写任何Java(或Groovy)来重新表达我已经在XML中表达的内容.

是否可以将Maven pom.xml文件重构 XML?

Bre*_*ter 4

你是对的,这并不像应该的那么容易。“mixins”——准确地描述了这种功能——已经出现在 Maven 路线图上一段时间了。

您可以使用父 POM 来共享它们,假设所有这些项目都有一个共同的祖先。您可以仅配置不同的元素,它将与其余元素合并,或者您可以为它分配一个在使用它的地方定义的属性值。我知道,一般来说,这不适合此用例,因为父级描述的是结构而不是项目类型。

另一种选择是为此类项目创建原型。这允许您定义一次并生成到新项目中,但它不能直接重用。

目前最好的解决方案可能是自定义插件 - 我相信这是 Don Brown 编写 mojo-executor 插件的灵感,该插件现在位于:https: //github.com/TimMoore/mojo-executor。但是,是的,您需要 Java/Groovy :)