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>
这样就可以通过前缀访问自己的插件元数据目录