欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Maven中plugins与pluginManagement的区别说明

程序员文章站 2022-06-27 18:38:24
plugins与pluginmanagement的区别plugins 下的 plugin 是真实使用的,而 pluginmanagement 下的 plugins 下的 plugin 则仅仅是一种声明...

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.

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