一、Maven坐标的构成
- groupId:项目创建组织的标识符,一般是域名的倒写
- artifactId:项目在所属组织的标识符下的唯一标识
- packaging:打包的方式
- version:版本号
为什么会使用maven坐标?
- maven的世界中有很多很多的组成,需要有一个统一的唯一的标识来区别他们。
- 通过这些坐标的标识,文件就有自己的唯一的标识,找到它们就容易了很多。
二、依赖管理
2.1 配置依赖
<!--添加依赖配置-->
<dependencies>
<!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!--项目要使用到Hello的jar包,所以在这里添加Hello的jar包的依赖-->
<dependency>
<groupId>me.gacl.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
2.2 依赖范围
依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动
2.3依赖的传递性
Janson.jar直接依赖于JansonLin.jar,而JansonLin.jar又直接依赖于Lin.jar,那么Janson.jar也依赖于Lin.jar,这就是传递性依赖,只不过这种依赖是间接依赖