Maven3 子项目不从 `pluginManagement` 引用,而是从父项目继承

Posted

技术标签:

【中文标题】Maven3 子项目不从 `pluginManagement` 引用,而是从父项目继承【英文标题】:Maven3 child project does not reference from `pluginManagement` but inherit from parent project 【发布时间】:2021-07-14 10:23:18 【问题描述】:

我的项目树喜欢

parent project (plugin A: version=1.0)
  child project (pluginManagement(plugin A: version=2.0), (plugin A: without version))

示例

父母
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.2</version>
</plugin>
孩子
...
<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
</plugin>
...
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>3.0.0-M5</version>
    </plugin>
  </plugins>
</pluginManagement>

将使用最终版本 2.22.2

而且我不能更改父 pom.xml,它就像 spring-boot-starter-parent

如何使用pluginManagement指定的版本?

【问题讨论】:

【参考方案1】:

通过不在父 POM 的 &lt;plugins&gt; 部分中指定版本。在父 POM 中使用 &lt;pluginManagement&gt;

【讨论】:

谢谢你的帖子,但我无权更改父pom文件,它就像spring-boot-starter-parent 那么不能使用pluginManagement覆盖版本,需要直接在&lt;plugins&gt;中的&lt;plugin&gt;定义中设置。 谢谢,但如果这是唯一的方法,我觉得很奇怪。 直接定义总是比pluginManagement强。这也适用于父 POM 中的直接定义。

以上是关于Maven3 子项目不从 `pluginManagement` 引用,而是从父项目继承的主要内容,如果未能解决你的问题,请参考以下文章

maven中的plugins 和 pluginManagement有啥区别

maven中的plugins 和 pluginManagement有啥区别

Maven中plugins和pluginManagement的区别

是否可以不在父pom中指定pluginManagement?

Maven pom 中plugins和pluginManagement 的区别

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