maven插件解析机制

仅供学习使用,转载自http://blog.csdn.net/lastsweetop/article/details/8531347

maven插件的介绍网上也有很多了,这里主要从一个方面来探讨和学习下maven插件的功用。

这里通过一条命令的扩展来看maven插件的机制。

输入

mvn dependency:tree  

maven会做些什么呢?

一、第一步

maven会默认以org.apache.maven.plugins作为groupId,收集所有插件仓库的元数据org/apache/maven/plugins/maven-metadata.xml

而默认的仓库为http://repo.maven.apache.org/maven2/,即查找http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml

添加默认groupId的方式为在maven的settings.xml文件里添加(最好将此文件放在用户目录/.m2/目录下)

<pluginGroups>  
    <pluginGroup>com.your.plugins</pluginGroup>  
</pluginGroups>  

添加默认插件仓库的方式是要在工程的pom.xml文件下添加

<pluginRepositories>  
    <pluginRepository>  
        <id>user</id>  
        <url>http://www.yourpluginrepos.com</url>  
        <name>your plugin repository</name>  
        <layout>default</layout>  
        <snapshots>  
            <enabled>false</enabled>  
        </snapshots>  
        <releases>  
            <updatePolicy>nerver</updatePolicy>  
        </releases>  
    </pluginRepository>  
</pluginRepositories>  

到这里命令已经扩展成为

mvn org.apache.maven.plugins:dependency:tree  

二、第二步

查找第一步所有插件仓库归并后的元数据文件maven-metadata.xml,找到对应的artifactId,这里找到的是maven-dependency-plugin,如图

<plugin>  
    <name>Maven Dependency Plugin</name>  
    <prefix>dependency</prefix>  
    <artifactId>maven-dependency-plugin</artifactId>  
</plugin>  

到这里命令相当于扩展成为

mvn org.apache.maven.plugins:maven-dependency-plugin:tree  

三、第三步

根据groupId,artifactId找到对应插件的maven-metadata.xml文件,本例中为http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/maven-metadata.xml,即如图显示

<metadata>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-dependency-plugin</artifactId>  
    <versioning>  
        <latest>2.6</latest>  
        <release>2.6</release>  
        <versions>  
            <version>2.0-alpha-1</version>  
            <version>2.0-alpha-2</version>  
            <version>2.0-alpha-3</version>  
            <version>2.0-alpha-4</version>  
            <version>2.0</version>  
            <version>2.1</version>  
            <version>2.2</version>  
            <version>2.3</version>  
            <version>2.4</version>  
            <version>2.5</version>  
            <version>2.5.1</version>  
            <version>2.6</version>  
        </versions>  
        <lastUpdated>20121125202149</lastUpdated>  
    </versioning>  
</metadata>  

maven将所有的远程插件仓库及本地仓库元数据归并后,就能找到release的版本(maven3后为了保证项目构建的文档性使用release版本)

到这里命令被扩展成为

mvn org.apache.maven.plugins:maven-dependency-plugin:2.6:tree  

至此命令已经扩展为一条唯一化且容易理解的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值