前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1教你学Maven(全网最详细)(十一)Maven项目之间的关系

从0到1教你学Maven(全网最详细)(十一)Maven项目之间的关系

作者头像
一写代码就开心
发布2021-07-08 15:25:54
7810
发布2021-07-08 15:25:54
举报
文章被收录于专栏:java和pythonjava和python

目录

1. 问题:

目前我们可以使用Maven来创建项目,并且使用Maven来

管理项目中的第三方的资源,同时当我们将项目的功能开发完成后,将自己的项 目通过maven打包到本地仓库中,提供给

其他项目使用,但是在该流程中存在以下的问题:

问题一:

项目A中根据开发需求,将代码根据功能进行了分层,例如使用MVC的分层思想,将项目A的代码分为了service层pojo层,mapper层等。那么在项目B中需要使用项目A已 经开发好的功能,我们目前会使用Maven将整个项目A的资 源全部打包放到本地仓库中,但是项目B需要使用的是项目A 中的部分功能不是所有的功能,按照目前这种方式会造成项目 B中引入的是项目A的整个资源,造成项目B在资源加载时 效率过低,浪费资源。

总结:打包项目整个项目打成一个包,造成资源使用不方便。

问题二:

我们使用Maven创建了三个项目,并且这三个项目,都在 使用SSM的功 能,那么我们就需要在三个项目的pom.xml 文件都要引入SSM的资源坐标。后 期如果我们需要升级SSM的资源的版本号或者需要在三个项目中都引入其他的资 源时,我们需要同时修改三个pom文件,麻烦!

总结:不同的maven项目会使用到相同的资源,造成资源修改麻烦。

2. 解决:

① 问题一的解决:打包项目的方式过于死板,打的是整个包。

因为我们目前开发一个项目,会将项目所有的功能放在一个项目全部声明。

而maven打包的基础单位是一个maven项目,也就说一个maven的project

会被打成一个包。根据maven的打包规则,以及我们自己的项目功能对外提 供的需求。我们需要在开发项目时,由以前在一个maven project中声明项 目的所有功能代码,变为在N个maven project中来完成项目功能的开发, 每个maven project中声明一部分功能代码,但是当我们使用maven去运行 我们的项目时,maven会将N个project中的代码合并为一个项目。也就说

在物理视图项目,一个项目的功能代码被拆分到N个项目中完成,在逻辑上

这N个项目是一个项目。这样我们在使用Maven去打包项目的时候,maven 会将项目的N个project分别打包,最后打成N个包,其他人就可以根据自 己的需求来获取指定的资源使用了。

② 问题二的解决:不同的项目之间使用相同的资源坐标,不好管理。

我们将不同的项目中需要使用的相同的资源进行抽取,抽取为一个公共的配置

然后让其他的项目呢都引用该功能配置即可。

在这里插入图片描述
在这里插入图片描述

Maven项目之间的依赖关系

1. 依赖关系的介绍

项目A中会使用项目B中的资源,我们会将项目B的包导入到项目A中使用

那么项目A和项目B之间就是依赖关系。项目A依赖项目B。

2. Maven项目依赖关系的使用

① 创建项目A完成功能开发

② 在项目A的pom文件中配置项目B或者其他第三方资源的资源坐标

③ 在项目A中正常调用项目B的资源即可。

3. 注意:

在开发阶段,并且在同一个工作空间,不同的maven项目之间可以通过资源

坐标直接调用其资源,无需将其打包放到本地仓库中。但是在项目运行期间,必 须根据依赖关系的顺序依次打包,才能正常运行。比如A–>B—>C—>D

打包的顺序为先打包D再打包C再打包B再打包A。最简单的记忆方法,就是

不管是开发阶段还是运行阶段只要项目A依赖的其他项目都需要进行打包,其他项目每修改依次就重新打包一次。

Maven项目之间的继承关系

项目A继承项目B,那么项目A就直接拥有项目B中的资源。资源指的是项目B

通过pom文件获取的资源,不是项目B中的功能代码资源。也就说maven项目 之间的继承是pom资源之间的继承,不是项目功能代码的继承。

② pom类型项目的创建

先创建一个jar类型的项目,然后将目录结构删除,只保留pom文件

然后在pom文件中使用packaging标签修改项目的类型为pom类型

注意

(1) maven项目的继承关系中的父项目要创建为pom类型

(2) 继承关系中的maven项目是相互独立的,本质就是两个项目

比如项目A继承了项目B,项目A和项目B的功能还是各自的功能,是独立只不过在项目A中可以拥有项目B的第三方资源。项目B的所有子项目之 间也是相互独立的。

Maven项目的聚合关系

依赖关系是A调用B中的功能资源,将B打包放入A中使用。

继承关系是A可以拥有B中的声明的资源。 聚合关系:

将本来一个整体的事物,拆分为不同的零件。每个零件在物理视图上是独立的,也就说肉眼看到的是多个零件。但是在逻辑上这些零件是属于一个个体的。这些零件之间的关系就是聚合关系

maven项目中使用聚合关系的流程

① 创建一个pom项目:

代码语言:javascript
复制
记录子项目之间的逻辑关系。

统一管理项目的资源,每个子项目的pom文件的依赖的并集。

让子项目都继承该pom项目。

② 根据MVC的代码结构,将项目拆分,拆分为四个子项目

代码语言:javascript
复制
pojo项目

mapper项目

service项目

web项目

③ 配置子项目之间的依赖关系

代码语言:javascript
复制
web-->service-->mapper--->pojo

总结:

我们在使用了聚合关系将项目拆分为N个子项目后,为了便于N个子项目

的资源的统一,N个子项目继承同一个父项目。又因为N个子项目开发的是

同一个功能,子项目之间又存在相互的调用,使用依赖关系来实现子项目之间

的相互调用。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1. 问题:
    • 问题一:
      • 问题二:
      • 2. 解决:
        • ① 问题一的解决:打包项目的方式过于死板,打的是整个包。
          • ② 问题二的解决:不同的项目之间使用相同的资源坐标,不好管理。
          • Maven项目之间的依赖关系
            • 1. 依赖关系的介绍
              • 2. Maven项目依赖关系的使用
                • 3. 注意:
                • Maven项目之间的继承关系
                  • 注意
                  • Maven项目的聚合关系
                    • maven项目中使用聚合关系的流程
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档