您的位置:首页 > 其它

maven插件解析机制

2013-01-22 21:35 260 查看
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

至此命令已经扩展为一条唯一化且容易理解的命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: