父Pom中定义的Maven插件有时不会在未声明的子对象中触发

问题描述 投票:0回答:1

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

<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中的lifecycle阶段之前,因此,我认为它应该已经“按照给定的顺序执行了”。但这不是,为什么?

谢谢任何能够帮助我查询的人! :)

java maven maven-dependency-plugin
1个回答
0
投票

<pluginManagement>部分用于在该项目和子项目之间共享插件配置。仅当插件在<plugins>中定义时才执行。有关更多信息,请参见this answer

但是,某些插件无需在<plugins>中定义。这适用于built-in lifecycle binding的插件,例如maven-jar-pluginmaven-resource-pluginmaven-compiler-plugin

© www.soinside.com 2019 - 2024. All rights reserved.