什么是插件管理在 Maven 的 pom.xml?

这是我的 pom 文件的一个片段。

....
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>                        
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            ......
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
...

我成功地使用它与命令

mvn install

但是,当我尝试将其包含在“pluginManagement”标签中时,当我启动目标时,它们将停止工作。为什么“pluginManagement”标签会改变构建行为?或者我应该使用其他目标或选项?maven-dependency-plugininstall


答案 1

您仍然需要添加

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
</plugins>

,因为这只是在所有项目模块之间共享相同插件配置的一种方式。pluginManagement

来自 Maven 文档:

pluginManagement:是一个与侧面插件一起看到的元素。插件管理以大致相同的方式包含插件元素,除了它不是为此特定项目构建配置插件信息,而是旨在配置从此构建继承的项目构建。但是,这仅配置在子级的插件元素中实际引用的插件。孩子们完全有权覆盖插件管理定义。


答案 2

和 之间的区别是,一个低于:<pluginManagement/><plugins/><plugin/>

  • <pluginManagement/>定义将由构建中的模块继承的插件的设置。这对于您有父 pom 文件的情况非常有用。

  • <plugins/>是用于实际调用插件的部分。它可能继承,也可能不继承自 .<pluginManagement/>

您不需要在项目中拥有 a,如果它不是父 POM。但是,如果它是父 pom,那么在孩子的 pom 中,您需要有一个声明,例如:<pluginManagement/>

<plugins>
    <plugin>
        <groupId>com.foo</groupId>
        <artifactId>bar-plugin</artifactId>
    </plugin>
</plugins>

请注意,您没有定义任何配置。您可以从父项目继承它,除非您需要根据子项目的需要进一步调整调用。

有关更具体的信息,您可以检查:


推荐