暑期微基础学java的7天。

依赖管理

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立依赖关系
  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

 如何在被其他调用的时候,隐藏一些依赖呢?(隐藏依赖就等于关闭掉传递依赖,使得引用这个模块的模块不能使用某个依赖)

例如将day6dao的模块中,隐藏调用pojo模块,刷新工程会出现什么效果:

        <dependency>
            <groupId>com.wst</groupId>
            <artifactId>Springmvc_08_pojo</artifactId>
            <version>1.0.0</version>
            <optional>true</optional>
        </dependency>

为刷新是依赖展示:

 刷新后依赖展示,在ssm模块下的dao模块依赖中的pojo就消失了:

 dao模块下的pojo仍然存在:

 在ssm模块中传递依赖消失则会报错。

 如果在调用一些模块的时候,不想调用该模块下的某些依赖(某些依赖会跟自己主模块的依赖相互冲突),则需要在主模块调用该模块的时候,就要在调用模块的坐标下排除依赖:

例如想要ssm模块调用dao模块的时候,排除mybatis依赖,则要在smm的pom文件调用dao模块的时候,下面增加排除函数依赖

<dependency>
      <groupId>com.wst</groupId>
      <artifactId>Spring_08_dao</artifactId>
      <version>1.0.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

这样就能够在调用dao模块的时候,排除掉dao模块中的mybatis依赖。

运行后 在smm模块的dao模块依赖中mybatis就消失了:

 继承与聚合

聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
  • 聚合工程: 通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
  • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

我们来创建一个工程来管理其他三个工程:

创建一个Spring_08_parent工程,将里面的pom文件中打包方式该为pom,并且使用modules来选择管理要管理的三个工程:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wst</groupId>
    <artifactId>Spring_08_parent</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

<!--    设置管理的模块名称-->
    <modules>
        <module>../Spring_08_dao</module>
        <module>../Springmvc_08_pojo</module>
        <module>../Springmvc_08_ssm</module>
    </modules>
</project>

在管理完成后,在maven中compile一下,查看结果如图所示(显示的则是三个过程包括自己运行成功):

 构建的顺序按照依赖调用来,最先依赖的会在第一个。

继承

  • 概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承夫工程中的配置信息,常见于依赖关系的继承。

作用:

  • 简化配置
  • 减少版本冲突

我们将在主工程Spring_08_parent里面添加项目所需要的依赖,将子工程里的依赖移除,并在子工程pom文件里使用parent 带上父工程里的坐标来继承父工程里面的依赖:

<parent>
    <groupId>com.wst</groupId>
    <artifactId>Spring_08_parent</artifactId>
    <version>1.0.0</version>
    <relativePath>../Spring_08_parent/pom.xml</relativePath>
  </parent>

这样就能将父工程里的依赖加载进来,并且在父工程里修改依赖,子工程里的依赖也会随之修改,这样就做到了依赖的统一。

 如果有些依赖是某些工程特有的(其他工程不需要),那我们可以设置依赖管理,这样在依赖管理里面的依赖,就可以在子工程里让子工程自己去调用,效果也跟上述类似,父工程里的依赖管理中依赖改变,子工程也会相应的改变:

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

这样在子工程再次调用(注意不要写版本号,这样就能默认继承父工程的依赖管理中的依赖,且会随着父工程里的依赖改变而改变):

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>

聚合与继承的区别

作用
  • 聚合用于快速构建项目
  • 继承用于快速配置
相同点:
  • 聚合与继承的pom.xm1文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

总结:

聚合与继承能够很好的统一一个项目中各种工程的依赖,聚合能够使每个工程里重复出现的依赖放在父工程里面,在子工程需要的时候调用,能够消除依赖的冲突,父工程修改依赖对应的子工程也能及时更新,统一依赖。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值