MAVEN_依赖管理

1. maven的坐标
 maven世界拥有大量构建,我们需要用一个规范(坐标)来作为某个构建的唯一标识(类似于数据库中的主键)。
maven坐标组成:

 groupId:定义当前maven项目隶属项目
 artifactld:定义实际项目中的一个模块
 version:定义项目的当前版本
 packing:定义该项目的打包方式

2. 依赖范围
 给jar包的作用范围进行限制,根据不同需求,进行不同等级的限制。在pom.xml中的标签下配置子标签。

依赖范围(scope) 对运行主代码(源码) 对测试代码 参与打包 例子
cpmpile(默认值) 有效 有效 有效 log4j
test 有效 Junit
provided 有效 有效 servlet-api
runtime 有效 JDBC Driver


3. 依赖管理
<1>传递性依赖
 举个栗子来讲,有三个角色分别为 校长、老师和学生。直接依赖:老师吩咐学生去做事情,对老师而言,学生就是直接依赖。间接依赖:校长吩咐老师去做事情,老师又叫学生去做事情。对校长而言,老师是直接依赖,学生就是间接依赖。

<2>可选依赖
 控制当前资源是否向下传递,在pom.xml中的标签下配置子标签。其默认值为false,如果配置成true,那么就会使得配置了这个optional的jar包不跟随项目传递而传递。

<3>排除依赖
 相对于可选依赖,排除依赖具有主动权,可以自己选择要不要这个jar包,而对于选择依赖就是被动了,自己没有权利选择,人家给你了,你才有排除依赖权,人家不给你jar包,你也没办法选择要还是不要。

<dependencies>
            
            
            
            <exclusions>
                
                <exclusion>
                    <groupId>cn.itcastgroupId>
                    <artifactId>OneartifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>

<4>依赖冲突
 如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)。
 如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)。可以理解成最后的修改覆盖了之前的修改。

你可能感兴趣的:(maven)