在Parent Pom中定义的Maven插件有时在没有声明的情况下不会在Child中触发



在我的父POM中,我在<pluginManagement><plugins>中定义了一个具有阶段prepare-package的依赖插件。

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${version.plugin.resources}</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>${version.plugin.dependency}</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${classpathDir}</outputDirectory>
<includeScope>runtime</includeScope>
<excludeClassifiers>${dependencyClassifiers}</excludeClassifiers>
</configuration>
</execution>
</executions>
</plugin>

在我的孩子POM中,我没有指定任何依赖插件。它没有被执行。我必须把它放在<plugins>中才能触发:

<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>

我使用的Maven目标是clean install

我的问题是,为什么我必须在我的孩子POM中再次明确指定maven-dependency-plugin

  1. 其他插件,如maven-jar-pluginmaven-resource-pluginmaven-compiler-plugin正在运行,尽管我没有在POM中重新声明它们。为什么不一致
  2. 依赖关系的阶段被配置为prepare-package,它在Maven生命周期的package阶段之前,因此我认为它应该"按照指定的顺序执行"。但事实并非如此,为什么

提前感谢任何能够帮助我查询的人!:(

<pluginManagement>部分用于在该项目和子项目之间共享插件配置。只有在<plugins>中定义了插件时,才会执行插件。有关详细信息,请参阅此答案。

但是,有些插件不需要在<plugins>中定义。这适用于内置生命周期绑定的插件,如maven-jar-pluginmaven-resource-pluginmaven-compiler-plugin

相关内容

最新更新