如何在 Maven 中验证父 POM 的 pluginManagement 部分?

Posted

技术标签:

【中文标题】如何在 Maven 中验证父 POM 的 pluginManagement 部分?【英文标题】:How can I validate the pluginManagement section of my parent POM in Maven? 【发布时间】:2011-11-13 12:31:19 【问题描述】:

我使用的项目布局类似于this question. 接受的答案中描述的第一个布局-pom 有效吗?

据我所知,Maven 只检查实际在构建中使用的插件。由于我在 pluginManagement 中声明的大多数插件在我构建父 pom 时都不会被使用,所以在子项目尝试使用它期望的插件之前,我无法知道我是否有无效条目由 parent-pom 管理。

我已经尝试过版本插件,但它似乎忽略了不存在的插件(例如:错别字)。我已经尝试使用inherited=false 在我的父 pom 中声明插件,但是我必须将每个声明的插件绑定到一个阶段。另外,我不一定要针对我的父 pom 运行这些插件。

我知道很多人使用某种类型的 parent-pom 或 super-pom,所以一定有一些我忽略的东西。

【问题讨论】:

【参考方案1】:

在您的父 pom 模块中创建一组测试 maven 项目,所有项目都继承父 pom,使用其中定义的部分或全部插件,并让父 pom 运行并验证测试 maven 项目的构建成功。 maven-invoker-plugin 可以帮助您完成这一切。这个插件被大量用于测试maven核心插件,所以你可以在sources of maven core plugins找到更多使用示例。

另一个建议是仅在需要时将插件添加到父 pom pluginManagement,然后您也将有机会对其进行测试。所以步骤是,开始构建一个项目,该项目使用父 pom 中尚不存在的给定插件,将插件添加到父 pom,发布父 pom 快照,在新项目中使用该快照,如果一切正常,则发布父 pom,并调整参考给新项目中的父 pom。稍后对于另一个或同一个项目,如果您需要其他插件或已在父 pom 中指定的更新版本的插件,调整父 pom,发布新的父 pom 快照,检查它是否适用于给定项目,以及是否发布父 pom,以及调整对新发布的父 pom 的父引用。

【讨论】:

我接受这个答案。我不喜欢这个解决方案,但我相信它是正确的,而且据我所知,这是完成我所要求的唯一方法。

以上是关于如何在 Maven 中验证父 POM 的 pluginManagement 部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 多模块项目中仅运行父 pom.xml

禁用父 POM 中定义的 Maven 插件

如何在 maven pom.xml 文件中拥有另一个父依赖项以及 Spring Boot 父项?

Maven 核心概念与理论

如何通过父pom中的dependencyManagement强制maven依赖版本?

砺锋私熟Maven 核心概念与理论