Maven常用知识

本文详细介绍了Maven的依赖传递原理,当项目依赖关系复杂时可能出现的依赖冲突及其解决方案,包括依赖调解原则、排除依赖和锁定版本。此外,还讲解了如何使用`<properties>`标签来统一管理版本号,以及Maven工程的继承和聚合特性,以实现代码复用和简化构建过程。

一.maven依赖传递

1.什么是依赖传递

   在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设C依赖B,B依赖A,那么我们可以根据maven项目依赖的特征不难推出项目C也依赖A。

2.什么依赖依赖冲突 ,如何解决依赖冲突?

   2.1什么是依赖冲突

   例如: 由于依赖传递现象的存在, spring-webmvc 依赖 spirng-beans-5.1.5,spring-aop 依赖 spring-beans-5.1.6,但是发现 spirng-beans-5.1.5 加入到了工程中,而我们希望 spring-beans-5.1.6 加入工程。这就造成了依赖冲突。

   2.2如何解决依赖冲突

     1.使用maven提供的依赖调解原则

         第一声明者优先原则(直接声明依赖,依赖大于依赖传递)

         路径近者优先原则(在pom 文件中定义依赖,以先声明的依赖为准)

     2.排除依赖(使用exclusions标签将传递过来的依赖排除出去)

     3.锁定版本(指定某个版本)

3.properties标签的使用

<properties>

 <spring.version>5.1.5.RELEASE</spring.version>

 <springmvc.version>5.1.5.RELEASE</springmvc.version>

 <mybatis.version>3.5.1</mybatis.version>

 </properties>

 <!--锁定jar版本-->

 <dependencyManagement>

 <dependencies>

 <!-- Mybatis -->

<dependency>

 <groupId>org.mybatis</groupId>

 <artifactId>mybatis</artifactId>

 <version>${mybatis.version}</version>

</dependency>

<!-- springMVC -->

<dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-webmvc</artifactId>

 <version>${springmvc.version}</version>

</dependency>

<!-- spring -->

<dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-context</artifactId>

 <version>${spring.version}</version>

</dependency>

 </dependencies>

 </dependencyManagement>

 

4.maven工程的继承

 在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码.。

 

5.maven工程的聚合

   在maven工程的pom.xml文件中可以使用标签将其他maven工程聚合到一起,聚合的目的是为了进行统一操作。

例如:拆分后的maven工程有多个,如果要进行打包,就需要针对每个工程分别执行打包命令,操作起来非常繁琐。这时就可以使用标签将这些工程统一聚合到maven父工程中,需要打包的时候,只需要在此工程中执行一次打包命令,其下被聚合的工程就都会被打包了。

    <groupId>com.yang</groupId>

    <artifactId> yang_edu_home_parent</artifactId>

    <packaging>pom</packaging>

    <version>1.0-SNAPSHOT</version>

    <modules>

        <module>ssm-utils</module>

        <module>ssm-domain</module>

        <module>ssm-dao</module>

        <module>ssm-service</module>

        <module>ssm-web</module>

    </modules>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值