maven

1. 依赖

1.1 依赖管理

通过maven的依赖管理对项目中使用的jar包进行统一管理

    <dependency>
      <groupId>javax.servlet</groupId>//组织名
      <artifactId>javax.servlet-api</artifactId>//项目名
      <version>3.1.0</version>//版本
      <scope>provided</scope>//作用范围
    </dependency>
依赖范围编译时测试时运行时例子
complie有效有效有效spring-context
test无效有效无效junit
provided有效有效无效jsp/servlet
runtime无效有效有效
system有效有效无效

如果没有指定依赖范围,默认使用complie

1.2 依赖传递

只加载了一个jar包,但是与这个jar有依赖关系的也会加载进行
在这里插入图片描述
这就会引发依赖冲突的问题

1.3 依赖冲突

在这里插入图片描述

1.4 依赖冲突的三种解决方案

  • 第一种
    第一声明原则,谁声明在前面就使用谁(如果jar太多,就不方便,不推荐)
    路径近者优先原则,谁的路径最短,maven就优先使用谁

  • 第二种 : 排除jar(不方便,不推荐)
    排除了spring-beans的jar

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.12.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  • 第三种: 锁定版本(推荐)
  <!--抽取项目中的共同版本
      借助于properties  格式自定义  名称随意
  -->
  <properties>
    <!--指定spring的版本-->
    <spring.version>5.2.12.RELEASE</spring.version>
    <mybatis.version>3.5.6</mybatis.version>
  </properties>

  <dependencyManagement><!--版本锁定,没有真正引入jar-->
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  
<dependencies><!--真正引入jar-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
  </dependency>
</dependencies>

2. maven的聚合工程

  <groupId>com.zy</groupId>
  <artifactId>day72_SSM_Parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--把当前的工程设定为父工程-->
  <packaging>pom</packaging>

在父工程的pom.xml定义jar的版本,不引入依赖.

  • 聚合
    在pom.xml的标签modules,表示想把其他模块工程聚合到父工程.本质就是把其他模块工程统一交给自己管理
  <modules>
    <module>day73_SSM_pojo</module>
  </modules>
  • 继承
    子模块工程继承父模块工程,可以使用父工程的相关配置,比如依赖
  <parent>//继承父工程
    <groupId>com.zy</groupId>
    <artifactId>day72_SSM_Parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

按层级大至可以分为4层 : pojo,dao,service,web
dao依赖pojo,service依赖dao,web依赖service,而它们都继承父工程
在这里插入图片描述

pojo,dao,service它们是jar工程,web是war工程
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值