maven-插件解析机制

Author Avatar
丁起男 11月 26,2020
  • 在其它设备中阅读本文章

maven-插件解析机制

为了方便用户使用和配置插件,maven不需要用户提供完整的插件坐标信息,就可以解析到正确的插件

插件仓库

和其它maven构件一样,插件构件也是基于坐标存储在maven仓库中,有需要的时候,maven会从本地查找插件,如果不存在,则到远程仓库查找,找到了以后下载到本地仓库,然后使用。

插件仓库在pom.xml中的配置

<pluginRepositories> 
    <pluginRepository> 
        <!-- 远程插件仓库的一个标识 -->
        <id></id> 
        <!-- 远程插件仓库的地址 -->
        <url></url> 
        <!-- 是否从远程插件仓库下载稳定版本插件 -->
        <releases> 
            <enabled></enabled> 
        </releases> 
        <!-- 是否从远程插件仓库下载快照版插件 -->
        <snapshots>
        	<enabled></enabled>
        </snapshots>
    </pluginRepository> 
</pluginRepositories>

插件仓库是pluginRepositories->pluginRepository

远程仓库是repositories->repository

其余基本一致

插件的默认groupId

在pom.xml配置插件的时候,如果是官方的插件,可以省略groupId

例如:

<build> 
    <plugins>
        <plugin> 
            <!-- 此插件是官方提供的,所以可以省略groupId -->
            <!--groupId>org.apache.maven.plugin</groupId-->
            <artifactId>maven-compiler-plugin</artifactId> 
            <version>3.1</version> 
            <configuration> 
                <!-- 编译器版本 -->
                <compilerVersion>1.8</compilerVersion>
                <!-- 源码的版本 -->
                <source>1.8</source>
                <!-- 目标代码的版本 -->
                <target>1.8</target> 
            </configuration> 
        </plugin> 
    </plugins> 
</build>

插件前缀的解析

使用mvn命令调用插件的时候,可以使用插件的前缀来代替繁琐的插件坐标的方式

插件前缀与插件groupId:artifactId是一一对应的关系,这个关系的配置存储在仓库的元数据中

元数据位于:

repository\org\apache\maven\plugins\maven-metadata-{配置的远程仓库的id}.xml
repository\org\codehaus\mojo\maven-metadata-{配置的远程仓库的id}.xml

也可以通过配置settings.xml文件,让maven检查其他grouId上的插件元数据中前缀和插件的关系

<settings> 
    <!-- pluginGroups中有多个pluginGroup -->
    <pluginGroups> 
        <!-- 配置自己插件的元数据所在的groupId -->
        <pluginGroup></pluginGroup> 
    </pluginGroups> 
</settings>

这样就可以通过前缀访问自己的插件元数据目录