如果我的pom是一个孩子的其他poms的层次结构,有没有办法准确显示哪个父pom包含插件的定义?
答案 0 :(得分:3)
简短回答很可能是:否。
根据Maven在执行某个构建之前构建其模型的方式,Maven Builder Model:
pom.xml
文件上完成的,这是由于合并,覆盖,分析,注入(属性)等等要查看完整的pom,maven-help-plugin
的{{3}}目标肯定是正确的工具。它将显示(或写入给定文件)构建将使用的最终有效pom。
只有拥有有效的pom,才能创建插件的完整定义(其执行,全局配置等),因为:
effective-pom
部分都可以影响某个插件pluginManagement
部分也会影响它plugin
也可以影响它profiles
,如果用作占位符,也可以发挥重要作用看一下官方的properties
,我们可以看到很多入口点影响某个插件定义,这个定义只有在整个pom层次结构合并后才对我们的构建有效。定义本身不会有太大帮助,因为它可以在层次结构链上进一步覆盖/影响。
考虑plugin
的{{3}}元素:
true
或false
,无论此插件配置是否应该应用于从此继承的POM。默认值为true
。
或合并plugin
configuration
个部分:
默认行为是根据元素名称合并配置元素的内容。如果子POM具有特定元素,则该值将成为有效值。如果子POM没有元素,但是父元素,则父值变为有效值 您可以通过向
configuration
元素的子元素添加属性来控制子POM如何从父POM继承配置。属性为combine.children
和combine.self
。在子POM中使用这些属性来控制Maven如何将父级的插件配置与子级中的显式配置相结合。
或者execution
的每个plugin
进一步向下:
inherited
:与上面的继承元素一样,设置此false
会让Maven无法将此执行传递给其子元素。此元素仅对父POM有意义。
然后,pluginManagement
:
插件管理包含插件元素的方式大致相同,除了不是为此特定项目构建配置插件信息,它旨在配置从此继承的项目构建。但是,这仅配置在子节点的plugins元素中实际引用的插件。孩子们有权覆盖
pluginManagement
定义。
因此,pom层次结构中某个点的插件定义可能对最终的有效构建没有意义。