Maven教程之进阶篇

1.分模块开发


1.分模块开发意义

我们写一个项目都喜欢写在一个模块中,就比如SSM 整合开发,将所有业务功能集中一起开发,会存在一些问题:

  • 当其中一个功能出现问题,会导致整个项目无法正常启动,从而等导致其他正常的功能无法工作
  • 项目的维护成本比较高
  • 代码可能会出现重复的问题

将原始模块按照功能拆分成若干个子模块,达到分模块开发:

  • 就能方便模块间的相互调用,接口共享
  • 项目中每个功能都可以单独维护,从而降低了解耦合
  • 可以很方便的被别人使用



2.分模块开发


分模块开发设计

  1. 根据项目的业务功能拆分
    将项目的每一层(controller、service、dao、pojo)分模块拆分出来

  2. 根据项目的业务模块拆分
    将项目的每一个业务功能分模块进行开发,例如电商系统中的订单模块单独抽取出来,商品模块抽取出来


分模块开发案例

基于 SSM 整合的项目实现分模块开发

例如:将 pojo (实体类)层独立开发
在这里插入图片描述

  1. 创建新模块
    在这里插入图片描述

  2. ssm_demo 中的 pojo 拷贝到 ssm_pojo 中,并删除 ssm_demo 中的 pojo
    在这里插入图片描述
    然后发现:ssm_demo中用到的实体类对象都爆红,因为实体类已经没有了
    在这里插入图片描述
    因此需要在 ssm_demo 中添加 ssm_pojo 的依赖


  1. ssm_pojo 的依赖 下载到 maven本地仓库
    使用maven的install命令,把其安装到Maven的本地仓库中
    在这里插入图片描述
    在这里插入图片描述

  1. ssm_demo 项目的 pom.xml 添加 ssm_pojo 的依赖

    <dependency>
          <groupId>com.maoge</groupId>
          <artifactId>ssm_pojo</artifactId>
          <version>1.0-SNAPSHOT</version>
    </dependency>
    

注意:如果没有做第三步,即使添加了依赖,依然还是报错,原因是Maven会从本地仓库找对应的jar包,但是本地仓库又不存在该jar包所以会报错


  1. 执行 ssm_democompile(编译)
    在这里插入图片描述
    在这里插入图片描述

至于其他层的分模块开发,家人们可以线下自己尝试去试试,与上雷同




2.依赖管理

  • 依赖:指当前项目运行所需要的jar包,一个项目可以设置多个依赖

  • 格式:

    <!--设计当前项目所依赖的所有jar-->
    <dependencies>
        <!--设置具体的依赖-->
        <dependency>
          <!--依赖所属群组id-->
          <groupId>junit</groupId>
          <!--依赖所属项目id-->
          <artifactId>junit</artifactId>
          <!--依赖版本号-->
          <version>4.12</version>
          <!--依赖的作用域-->
          <scope>test</scope>
        </dependency>
    </dependencies>
    

1.依赖传递

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系。
    • 间接依赖:被依赖的资源还依赖其他资源,则当前项目间接依赖其他资源。(举例:A依赖B,B依赖C,所以A间接也依赖C)
      在这里插入图片描述

依赖传递冲突

依赖冲突:一个项目中导入了多个不同版本的同名包,那么就产生了冲突。这个冲突很有可能导致项目无法运行。
举例:
在这里插入图片描述
基于依赖传递出现的冲突问题,maven提供了三种处理情况

  • 当同级中配置了相同资源的不同版本,后配置的覆盖前面配置的
  • 当依赖中出现相同资源时,层级越深,优先级越低;层级越浅,优先级越高
  • 当被依赖的资源在相同层级时,配置顺序靠前的覆盖配置顺序靠后的



2.可选依赖

可选依赖:指对外隐藏当前所依赖的资源
举例:

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.16</version>
      <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源不具有依赖传递性-->
      <optional>true</optional>
</dependency>



3.排除依赖

排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本
举例:


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

springboot大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值