maven的依赖范围和依赖传递

1.依赖范围

在这里插入图片描述
非compile范围依赖不能传递

2.maven依赖传递

依赖的传递性:如果A—>B,B—>C,那么A—>C。无限层传递。
假设现在:
(1)
A----->B------>C

A自己有依赖了C,如果A现在自己又依赖了C,如果A依赖的C和B传递过来的
C版本不一样那么这时候就会有问题

我在第一个maven工程:
在这里插入图片描述
然后在第2个工程中依赖了第一个maven工程同时又定义了:

在这里插入图片描述
log4j的版本为1.2.16如图提示依赖冲突:

在这里插入图片描述
我们也可以安装一个maven Helper的插件:

在这里插入图片描述
(2)
A----->M------>D1.0
A ----->N------>D1.1

2个D的版本不一致那么现在就会有版本问题

在这里插入图片描述
2个工程都有log4j的依赖

3.依赖排除

方式一:在声明依赖处排除,适合单处排除。

		<exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
       </exclusions>

在这里插入图片描述

方式二:在远声明依赖处排除,适合多处排除。

<optional>true</optional>

4.maven自己提供的解决冲突的原则

1、最短路径原则:

maven-04-dependency--->maven-03-dependencied2--->maven-03-dependencied---->log4j1.2.12
	                    --->maven-03-commons------>log4j1.2.11

2、最先声明原则(路径一样长)

maven-04-dependency--->maven-03-dependencied2---->log4j1.2.12
	                   --->maven-03-commons------>log4j1.2.11

取最先定义的log4j1.2.12

5.maven的全局变量

自定义变量:
      <properties>
        <spring.version>4.3.11.RELEASE</spring.version>
      </properties>

       ${变量名}  ${spring.version}

      内置变量:maven定义好的,可以直接使用
      ${project.version}

6.maven继承

Maven的聚合:在maven中每一个工程都具有独立构件能力,但是如果工程数量增多,而且工程之间有依赖关系,手动构建很麻烦,几乎不可能手动构建。
所谓聚合,就是把多个模块或项目聚合到一起,创建一个专门的工程进行统一进行管理和构建。
在pom中使用标签来实现,Maven会自动分析模块之间的构建顺序和依赖关系。

1、子POM可以从父POM中继承的元素:
           groupId、version、properties、dependencies、build、repositories、pluginRepositories、distributionManagement、dependencyManagement
           <finalName>虽然能继承,但是一般都是配置自己的名字。
2、打包方式<packaging>jar(默认。java工程)war(web工程)pom(所有含有子模块的模块,打包方式必须是pom)
          父POM的打包方式必须是pom。
 3、所有模块或者大多数模块都会使用的配置,在父POM中声明:
          properties、groupId、version、dependencies(非compile范围的公共依赖)、build(plugins)
	  dependencies(非compile范围的公共依赖):junit、servlet、jsp
	
	<dependencies>:声明依赖,实际引入。
    <dependencyManagement>:管理依赖。声明依赖,不实际引入,仅仅是声明。

       类似的还有:<plugins><pluginManagement>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值