后端——工具——构建工具——Maven——第五章节(插件基础)

  第五章节的知识分为三个部分,第一部分介绍插件的基础,第二部分介绍内置的插件,例如clean,compiler,resource,jar等等。第三部分介绍如何自定义插件。本篇介绍插件基础。它包含以下四块

  • 引入插件
  • 执行插件
  • 配置插件的仓库
  • 插件的extension属性

1、引入插件

  项目引入插件是通过在pom.xml中定义build | plugins | plugin标签。例如source插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>版本号</version>
    <configuration>
        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
        <finalName>${project.name}-jar</finalName>
    </configuration>
</plugin>

当plugin的groupId为org.apache.maven.plugins,org.codehaus.mojo时,可以忽略不写。

在setting.xml中定义pluginGroups | pluginGroup标签下的插件,不必填写groupId。

除上述两种情况之外,任意其他的插件组都需要填写。

在实际情况中,即使pom.xml未定义任何插件,它会从父pom,祖父pom等祖先pom中继承而来,它的根为super pom。

执行mvn help:effective-pom可以查看最终生效的pom。项目引入的插件在其中都可以找到。

pluginManagement中定义的插件是从祖先Pom,super pom中继承而来的。

2、执行插件

执行插件的方式有两种。

第一种方式的格式为mvn lifecycle:phase,其中lifecycle的含义为生命周期,是clean,default, site;可以省略。phase是生命周期拥有的phase。当调用命令之后,实际运行的还是与phase关联的goal的代码,若没有goal,不会有任何输出。

第二种方式的格式为mvn pluginName:goal,pluginName由groupId, artifactId, name组成,其中groupId为插件所在的组,artifactId为插件在组中的标识,name为插件项目的名称;groupId,artifactId可以省略。

3、插件仓库

  插件仓库属于通用的,通常不需要在每个项目的Pom.xml都定义一次,可以继承自父pom或super pom,默认的插件仓库定义在super pom中,可以在maven-model-builder-version.jar中找到。

  插件仓库的语法格式在第二章节的仓库地址部分已介绍,此处不再赘余。

4、extension属性

  引用原著中的叙述:

  If you associate a plugin with your project, which introduces a new packaging type or a customized lifecycle, then you must set the value of the extensions configuration element to true

  引入的插件定义了新的一种打包类型(默认是jar),或重新配置生命周期,这种情况下必须设置extensions属性为true,最常见的是将项目打包成war,即定义了一种新的打包类型

原文地址:https://www.cnblogs.com/rain144576/p/14468780.html