Maven中有很多构件,为了能自动化的解析任何一个构件,需要将它们做唯一标识,即依赖管理的基础——坐标。
Maven的唯一标识,我们可以理解为数学中的坐标:x、y、z。通过坐标确定jar包的位置。
在没有坐标之前,当我们需要一些jar包的时候,总需要去各个网站下载。这样一方面,浪费了很多时间,提高了程序开发成本。另一方面,下载没有统一规范,导致版本等不统一等,又严重提高了运维成本。
因为为实现统一管理,Maven定义了一组规则,让机器基于预定的规则去自动实现下载jar包。Maven坐标的元素包括:groupId,artifactId,version,packaging,classifier。只要我们提供正确的坐标,Maven就能找到对应的jar包。
那么Maven是从哪下载jar包呢。其实它有一个中央仓库(http://repol.maven.org/maven2)。该中央仓库包含了世界上大部分主流的开源项目构件。Maven会在需要的时候去下载。
如:ITOO-basic中:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
<packaging>jar</packagingn>
</dependency>
则Maven会到org/apache/poi/poi/3.11路径下找到poi-3.11.jar
分述各坐标含义:
groupId:定义当前Maven项目隶属的实际项目。
artifactId:该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。
version:该元素定义Maven项目当前所处的版本。
packaging:该元素定义Maven项目的打包方式。为打包生成文件的扩展名。如上栗打包生成的文件为:
poi-3.11.jar。
classifier:该元素用来帮助定义构建输出的一些附属构件。
这5个元素中,groupId,artifactId,version是必须的,packaging是可选的,默认为jar。而classifier是不能直接被定义的。