第三章 maven核心概念-坐标

 我们来看一下上一章我们用eclipse创建的maven项目



 我们可以看到,在Maven Dependencies库中有junit的jar包,并且,我们在src/main/test下新建单元测试,可以引用junitjar包中的类。这是因为在生成的pom配置文件中有依赖配置:



 也就是maven自动帮我们添加了junit的jar包。我们先来思考一个问题,maven要去添加junit的jar包,它是如何识别这个jar包就是junit的jar包的,而不是spring的jar包?也就是它是怎么区分不同的jar包的?

我们说,平面上我们要区分不同的点,我们可以用横坐标、纵坐标来表示;空间区分不同的点,我们使用x、y、z三个元素来确定;生活中,区分不同的地址,可以用省市区县街道门牌号来表示。那么maven通过什么方式来区别不同的jar包呢?答案是坐标。

  就好比地址是一个坐标,它的元素是省市区县等,而maven坐标的元素主要是groupId、artifactId、version。

  groupId:maven项目隶属的实际项目,它是必须的。 maven项目与实际项目不一定是一对一,如Springframework。Springframework是实际的项目,但是低下又会分为spring-core、spring-bean等很多项目,每一个项目就是一个maven项目。groupId的命名方式一般为公司或组织名+实际项目名,与java包名的表示方式类似;

  artifactId:maven项目(模块)的名称,它也是必须的,推荐使用实际项目名作为前缀,如spring-core;

  version:项目当前所处版本,如1.0.1,它也是必须的;

  packaging:项目打包方式,它是可选的,通常与生成的构件的扩展名对应,默认为jar

  classifier:定义构建输出的附属构件,如javadoc等,不能直接定义

其中,groupId、artifactId、version是必须的,简称GAV。maven正是通过这三个元素来区分不同的jar包,比如junit,它的坐标可能如下:

<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>

 不同版本的jar包通过不同的version体现,如:

<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>

我们已经知道maven通过坐标来区分不同的jar包,那么,maven如何帮我添加这些jar呢,maven会主动帮我们添加我们需要的jar包吗?答案是否定的,maven没那么智能,我要我们告诉它,我们需要什么jar包(依赖),然后它才会做相应的处理,这就是依赖。我们将在下一章详细阐述依赖的概念。

猜你喜欢

转载自ywu.iteye.com/blog/2345408