maven 项目之间的关系

maven 项目之间的关系

  • 问题:

    • 一:项目 B 只需要引用项目 A 的部分功能,全部引入的话效率不高

    • 二:不同项目之间使用相同的资源坐标,造成资源修改麻烦

  • 解决

    • 一:把一个 maven 项目拆分成 n 个 maven 项目,本来是把所有的功能都放在一个 maven 项目中,现在每个 maven 项目实现一个 小功能。这样在物理视图中,一个项目的功能代码被拆分到 n 个项目中完成,逻辑上还是一个项目。maven 打包时会打成 n 个包,根据需求调用就行了
    • 二:把不同项目使用的相同的资源坐标放到一个配置文件中
  • 实现 — 依赖关系、继承关系、聚合关系

依赖关系

  • 项目 A 和项目 B 在同一个工作空间(同一个目录)中,项目 B 可以调用项目 A 的 全部资源(代码和引入的 jar 包),无需将项目 A 打包放到本地仓库中。但 如果项目需要在服务器(例:tomcat)上运行,就需要打包了

  • 打包要根据依赖关系的顺序依次打包,A —> B —> C,打包顺序:C ,B,A

  • 项目 A 和 项目 B 是两个独立的项目,项目 B 需要依赖项目 A 才能完成功能,它们各自实现一个功能

  • 使用

    项目 A 的 pom.xml

    <groupId>com.kuang</groupId>
    <artifactId>kuang</artifactId>
    <version>1.0-SNAPSHOT</version>
    

    项目 B 的 pom.xml

    <dependencies>
        <dependency>
            <groupId>com.kuang</groupId>
            <artifactId>kuang</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    

继承关系

  • maven 项目中的继承关系指的是第三方资源的继承,例如项目 B 继承项目 A ,则项目 A 中有项目 B 的所有 第三方资源

  • 继承关系中的项目是互相独立的

  • 子项目中使用 parent 标签

    <parent>
        <groupId>com.kuang</groupId>
        <artifactId>kuang</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
  • 把父项目改为 pom 类型

    <packaging>pom</packaging>
    

聚合关系

  • 将一个项目拆分成多个子项目来完成功能

  • 多个子项目共同完成一个功能

  • 使用流程

    • 创建一个 maven 父项目,类型为 pom

    • 在父项目下创建子项目,根据 MVC 框架,分别创建 pojo、mapper、service、controller 四个子项目,前三个类型为 jar 类型,controller 为 war 类型

      <modules>
          <module>01_pojo</module>
          <module>02_mapper</module>
          <module>03_service</module>
          <module>04_controller</module>
      </modules>
      
    • 由于每个项目使用的第三方资源不一样,如果直接继承父项目的资源,会影响项目效率。所以,使用 dependencyManagement 标签,被此标签管理的资源,不会直接被子项目继承,需要子项目单独地声明从父项目中继承地资源子项目在引用资源的时候不需要声明资源的 version

      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>${spring-webmvc}</version>
              </dependency>
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>servlet-api</artifactId>
                  <version>${servlet-api.verison}</version>
              </dependency>
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>${mysql-connector.version}</version>
              </dependency>
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus</artifactId>
                  <version>${mybatis-plus.version}</version>
              </dependency>
          </dependencies>
      </dependencyManagement>
      
      <dependencies>
          <dependency>
              <groupId>com.baomidou</groupId>
              <artifactId>mybatis-plus</artifactId>
          </dependency>
      </dependencies>
      
    • 运行 web 项目的时候,要先在父项目中 install ,然后在有 tomcat 插件的子项目中运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值