在 Maven 中,`<pluginManagement>` 是一个用于集中管理插件配置的机制

1. 什么是 Plugin Management?

在 Maven 中,<pluginManagement> 是一个用于集中管理插件配置的机制。它允许在父 POM 中定义插件的版本和配置,而子模块可以选择性地继承这些配置。这种方式可以避免在多个子模块中重复定义相同的插件配置,提高项目的可维护性。


2. Plugin Management 的作用

  • 集中管理插件版本:在父 POM 中统一管理插件的版本,避免版本冲突。
  • 共享插件配置:在父 POM 中定义插件的默认配置,子模块可以直接继承。
  • 减少重复代码:避免在多个子模块中重复定义相同的插件配置。

3. Plugin Management 的使用

(1) 在父 POM 中定义 Plugin Management

在父 POM 的 <build> 中使用 <pluginManagement> 定义插件配置:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
(2) 在子模块中继承插件配置

子模块可以直接继承父 POM 中定义的插件配置,无需重复定义:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
        </plugin>
    </plugins>
</build>
(3) 覆盖父 POM 的配置

如果子模块需要覆盖父 POM 中的插件配置,可以在子模块中重新定义:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
    </plugins>
</build>

4. Plugin Management 与 Plugins 的区别

  • <pluginManagement>:用于定义插件的默认配置,子模块可以选择性地继承。
  • <plugins>:用于直接声明插件及其配置,子模块必须使用这些配置。

5. 最佳实践

  1. 在父 POM 中集中管理插件:使用 <pluginManagement> 统一管理插件的版本和配置。
  2. 避免在子模块中重复定义插件:子模块应尽量继承父 POM 的插件配置。
  3. 灵活覆盖配置:子模块可以根据需要覆盖父 POM 的插件配置。
  4. 保持插件版本一致:通过 <pluginManagement> 确保所有子模块使用相同的插件版本。

6. 示例项目结构

parent-project/
├── pom.xml
└── child-module/
    └── pom.xml
父 POM (pom.xml):
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.11.0</version>
                    <configuration>
                        <source>17</source>
                        <target>17</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
子模块 (child-module/pom.xml):
<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>child-module</artifactId>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

7. 总结

<pluginManagement> 是 Maven 中用于集中管理插件配置的强大工具,特别适用于多模块项目。通过在父 POM 中定义插件的默认配置,可以避免在子模块中重复定义,提高项目的可维护性和一致性。

更多详细信息,请参考 Maven 官方文档:https://maven.apache.org/pom.html#Plugin_Management
This report summarizes newer versions that may be available for your project’s various plugins.
# of plugins using the latest version available 26
# of plugins where the next version available is smaller than an incremental version update 0
# of plugins where the next version available is an incremental version update 0
# of plugins where the next version available is a minor version update 1
# of plugins where the next version available is a major version update 0
# of plugins where a dependencies section containes a dependency with an updated version 3
Plugin Management
Status Group Id Artifact Id Current Version Next Version Next Incremental Next Minor Next Major Dependency status
com.mycila license-maven-plugin 3.0
net.revelc.code.formatter formatter-maven-plugin 2.8.1
org.apache.maven.plugins maven-antrun-plugin 1.8
org.apache.maven.plugins maven-assembly-plugin 3.1.1
org.apache.maven.plugins maven-clean-plugin 3.1.0
org.apache.maven.plugins maven-compiler-plugin 3.8.0
org.apache.maven.plugins maven-dependency-plugin 3.1.1
org.apache.maven.plugins maven-deploy-plugin 3.0.0-M1
org.apache.maven.plugins maven-install-plugin 3.0.0-M1
org.apache.maven.plugins maven-javadoc-plugin 3.0.1
org.apache.maven.plugins maven-pdf-plugin 1.4
org.apache.maven.plugins maven-release-plugin 2.5.3
org.apache.maven.plugins maven-resources-plugin 3.1.0
org.apache.maven.plugins maven-shade-plugin 3.2.1
org.apache.maven.plugins maven-site-plugin 3.7.1
org.apache.maven.plugins maven-surefire-plugin 3.0.0-M3
org.codehaus.mojo versions-maven-plugin 2.7
org.eluder.coveralls coveralls-maven-plugin 4.3.0
org.gaul modernizer-maven-plugin 1.7.1 1.8.0
org.jacoco jacoco-maven-plugin 0.8.5
Status Group Id Artifact Id Current Version Next Version Next Incremental Next Minor Next Major Dependency status
Plugins
Status Group Id Artifact Id Current Version Next Version Next Incremental Next Minor Next Major Dependency status
org.apache.felix maven-bundle-plugin 4.1.0
org.apache.maven.plugins maven-checkstyle-plugin 3.0.0
org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M1
org.apache.maven.plugins maven-jar-plugin 3.1.1
org.apache.maven.plugins maven-scm-plugin 1.11.1
org.codehaus.mojo animal-sniffer-maven-plugin 1.17
org.codehaus.mojo clirr-maven-plugin 2.8
Status Group Id Artifact Id Current Version Next Version Next Incremental Next Minor Next Major Dependency status
Plugin Updates

Plugin com.mycila:license-maven-plugin
Status No newer versions available.
Group Id com.mycila
Artifact Id license-maven-plugin
Current Version 3.0
Dependencies of com.mycila:license-maven-plugin
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
com.mycila license-maven-plugin-git 3.0 jar
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
Dependency com.mycila:license-maven-plugin-git
Status No newer versions available.
Group Id com.mycila
Artifact Id license-maven-plugin-git
Current Version 3.0
Classifier
Type jar
Plugin net.revelc.code.formatter:formatter-maven-plugin
Status No newer versions available.
Group Id net.revelc.code.formatter
Artifact Id formatter-maven-plugin
Current Version 2.8.1
Dependencies of net.revelc.code.formatter:formatter-maven-plugin
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
com.github.hazendaz build-tools 1.1.8 jar 1.2.0
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
Dependency com.github.hazendaz:build-tools
Status There is at least one newer minor version available. Minor updates are sometimes passive.
Group Id com.github.hazendaz
Artifact Id build-tools
Current Version 1.1.8
Classifier
Type jar
Newer versions 1.2.0 Next Minor
1.2.1
1.2.2 Latest Minor
Plugin org.apache.felix:maven-bundle-plugin
Status No newer versions available.
Group Id org.apache.felix
Artifact Id maven-bundle-plugin
Current Version 4.1.0
Plugin org.apache.maven.plugins:maven-antrun-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-antrun-plugin
Current Version 1.8
Plugin org.apache.maven.plugins:maven-assembly-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-assembly-plugin
Current Version 3.1.1
Plugin org.apache.maven.plugins:maven-checkstyle-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-checkstyle-plugin
Current Version 3.0.0
Dependencies of org.apache.maven.plugins:maven-checkstyle-plugin
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
com.github.hazendaz build-tools 1.1.8 jar 1.2.0
com.puppycrawl.tools checkstyle 8.16 jar 8.17
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
Dependency com.github.hazendaz:build-tools
Status There is at least one newer minor version available. Minor updates are sometimes passive.
Group Id com.github.hazendaz
Artifact Id build-tools
Current Version 1.1.8
Classifier
Type jar
Newer versions 1.2.0 Next Minor
1.2.1
1.2.2 Latest Minor
Dependency com.puppycrawl.tools:checkstyle
Status There is at least one newer minor version available. Minor updates are sometimes passive.
Group Id com.puppycrawl.tools
Artifact Id checkstyle
Current Version 8.16
Classifier
Type jar
Newer versions 8.17 Next Minor
8.30 Latest Minor
Plugin org.apache.maven.plugins:maven-clean-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-clean-plugin
Current Version 3.1.0
Plugin org.apache.maven.plugins:maven-compiler-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-compiler-plugin
Current Version 3.8.0
Plugin org.apache.maven.plugins:maven-dependency-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-dependency-plugin
Current Version 3.1.1
Plugin org.apache.maven.plugins:maven-deploy-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-deploy-plugin
Current Version 3.0.0-M1
Plugin org.apache.maven.plugins:maven-enforcer-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-enforcer-plugin
Current Version 3.0.0-M1
Plugin org.apache.maven.plugins:maven-install-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-install-plugin
Current Version 3.0.0-M1
Plugin org.apache.maven.plugins:maven-jar-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-jar-plugin
Current Version 3.1.1
Plugin org.apache.maven.plugins:maven-javadoc-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-javadoc-plugin
Current Version 3.0.1
Plugin org.apache.maven.plugins:maven-pdf-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-pdf-plugin
Current Version 1.4
Plugin org.apache.maven.plugins:maven-release-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-release-plugin
Current Version 2.5.3
Plugin org.apache.maven.plugins:maven-resources-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-resources-plugin
Current Version 3.1.0
Plugin org.apache.maven.plugins:maven-scm-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-scm-plugin
Current Version 1.11.1
Plugin org.apache.maven.plugins:maven-shade-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-shade-plugin
Current Version 3.2.1
Plugin org.apache.maven.plugins:maven-site-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-site-plugin
Current Version 3.7.1
Dependencies of org.apache.maven.plugins:maven-site-plugin
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
net.trajano.wagon wagon-git 2.0.3 jar 2.0.4
org.apache.maven.skins maven-fluido-skin 1.7 jar 1.8
org.apache.maven.wagon wagon-ssh 3.3.1 jar 3.3.2
Status Group Id Artifact Id Current Version Classifier Type Next Version Next Incremental Next Minor Next Major
Dependency net.trajano.wagon:wagon-git
Status There is at least one newer incremental version available. Incremental updates are typically passive.
Group Id net.trajano.wagon
Artifact Id wagon-git
Current Version 2.0.3
Classifier
Type jar
Newer versions 2.0.4 Next Incremental
Dependency org.apache.maven.skins:maven-fluido-skin
Status There is at least one newer minor version available. Minor updates are sometimes passive.
Group Id org.apache.maven.skins
Artifact Id maven-fluido-skin
Current Version 1.7
Classifier
Type jar
Newer versions 1.8 Next Minor
Dependency org.apache.maven.wagon:wagon-ssh
Status There is at least one newer incremental version available. Incremental updates are typically passive.
Group Id org.apache.maven.wagon
Artifact Id wagon-ssh
Current Version 3.3.1
Classifier
Type jar
Newer versions 3.3.2 Next Incremental
3.3.3
3.3.4 Latest Incremental
Plugin org.apache.maven.plugins:maven-surefire-plugin
Status No newer versions available.
Group Id org.apache.maven.plugins
Artifact Id maven-surefire-plugin
Current Version 3.0.0-M3
Plugin org.codehaus.mojo:animal-sniffer-maven-plugin
Status No newer versions available.
Group Id org.codehaus.mojo
Artifact Id animal-sniffer-maven-plugin
Current Version 1.17
Plugin org.codehaus.mojo:clirr-maven-plugin
Status No newer versions available.
Group Id org.codehaus.mojo
Artifact Id clirr-maven-plugin
Current Version 2.8
Plugin org.codehaus.mojo:versions-maven-plugin
Status No newer versions available.
Group Id org.codehaus.mojo
Artifact Id versions-maven-plugin
Current Version 2.7
Plugin org.eluder.coveralls:coveralls-maven-plugin
Status No newer versions available.
Group Id org.eluder.coveralls
Artifact Id coveralls-maven-plugin
Current Version 4.3.0
Plugin org.gaul:modernizer-maven-plugin
Status There is at least one newer minor version available. Minor updates are sometimes passive.
Group Id org.gaul
Artifact Id modernizer-maven-plugin
Current Version 1.7.1
Newer versions 1.8.0 Next Minor
Plugin org.jacoco:jacoco-maven-plugin
Status No newer versions available.
Group Id org.jacoco
Artifact Id jacoco-maven-plugin
Current Version 0.8.5
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值