Maven中plugins与pluginManagement的区别说明

 更新时间:2021年09月25日 16:46:20   作者:y_bccl27  
这篇文章主要介绍了Maven中plugins与pluginManagement的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

plugins与pluginManagement的区别

plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugin 则仅仅是一种声明,父项目是不能使用的,子项目中可以对 pluginManagement 下的 plugin 进行信息的选择、继承、覆盖等。

假如存在两个项目,项目A为项目B的父项目,其关系通过pom文件的关系确定。项目A的父pom文件片段如下:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
         </plugin>
    </plugins>
</pluginManagement>

如果项目B也想使用该plugin配置,则在项目B的子pom文件中只需要如下配置:

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

可以看到,子项目的pom文件中,省去了版本、配置细节等信息,只需要指定groupId和artifactId,其他信息均从父项目的pom文件继承。如果子pom文件需要定制自己的插件,可以另行设置,并会覆盖从父pom文件继承到的内容。

特别提示:dependencies 和 dependencyManagement 均是 project 下的直接子元素,但是 plugins 和 pluginManagement 却是 project 下 build 的直接子元素。

plugins与pluginManagement的关系

在配置SonarQube的时候遇到了一些问题,例如surefire跟failsafe应该写在哪里

pluginManagement的作用类似于denpendencyManagement,只是denpendencyManagement是用于管理项目jar包依赖,pluginManagement是用于管理plugin。

与pom build里的plugins区别是,这里的plugin是列出来,然后让子pom来决定是否引用。

如果要让子模块继承父模块的plugin的使用,还是要在父模块里头声明这些plugin

另外说一下,关于packaging,pom意味着这个包本身不会被打成jar.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Java计算某个日期是星期几

    利用Java计算某个日期是星期几

    不知道大家有没有遇到过同样的问题,谁谁的生日又要到了,看看是星期几?每年都要遇到好几次,所以想索性利用Java写个小工具,一次查询某具体日期在n年中分别是星期几。这样不就方便了吗?本文里给出了详细的示例代码,感兴趣的朋友们下面来一起看看吧。
    2016-10-10
  • Java常用的八种排序算法与代码实现

    Java常用的八种排序算法与代码实现

    这篇文章主要给给大家分享Java常用的八种排序算法与代码实现,下面文章将详细介绍整个实现过程,感兴趣的小伙伙伴可以跟着小编一起来学习,希望对你有所帮助
    2021-10-10
  • springboot 如何取消starter的自动注入

    springboot 如何取消starter的自动注入

    这篇文章主要介绍了springboot 如何取消starter的自动注入操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java绘图技术基础(实例讲解)

    Java绘图技术基础(实例讲解)

    下面小编就为大家带来一篇Java绘图技术基础(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • SpringBoot构建RESTful API的实现示例

    SpringBoot构建RESTful API的实现示例

    本文主要介绍了SpringBoot构建RESTful API的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Java中的类加载器_动力节点Java学院整理

    Java中的类加载器_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Java中类加载器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突问题

    Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突

    这篇文章主要介绍了Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突问题,通过注释掉2.0引入的俩包,直接引入3.0,文中结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • IntelliJ IDEA连接MySQL数据库详细图解

    IntelliJ IDEA连接MySQL数据库详细图解

    今天小编就为大家分享一篇关于intellij idea连接mysql数据库详细图解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java线程间协作wait、notify和notifyAll详解

    Java线程间协作wait、notify和notifyAll详解

    这篇文章主要介绍了Java线程间协作wait、notify和notifyAll详解,在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信,尽管关于wait和notify的概念很基础,它们也都是Object类的函数,但用它们来写代码却并不简单,,需要的朋友可以参考下
    2023-10-10
  • java中@requestMappling注解的使用

    java中@requestMappling注解的使用

    本文主要介绍了java中@requestMappling注解的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论