Maven高级

61 阅读3分钟

1.dependencyManagement与dependencies的区别是什么?

  • 'dependencies'是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
  • 'dependencyManagement'是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

2. maven中如何实现聚合关系?

    <modules>...</modules>

3. maven中继承与聚合的联系与区别?

联系: 继承与聚合都属于设计型模块,打包方式都为pom,常将两种关系制作到同一个pom文件为

区别:

  • 继承用于简化依赖配置、统一管理依赖版本,是在子工程中配置继承关系
  • 聚合用于快速构建项目,是在父工程中配置聚合的模块

Maven相关概念:

分模块设计

在设计程序会有几种常见的程序问题拆分策略-分模块设计--策略:

  1. 策略一:按照功能模块拆分,比如:公共组件,商品模块,搜索模块,购物车模块,订单模块等。
  2. 策略二:按层拆分,比如:公共组件,实体类,控制层,业务层,数据访问层。(常见中小型程序设计)
  3. 策略三:按照功能模块+层拆分。 (大型应用)

功能模块组件封装:

1.直接依赖项目,有暴露代码风险,不推荐使用

2.抽取功能模块到一个maven模块,需要引用时直接引用依赖. -->多进度设计,存在优先级,模块设计完成后.

模块拆分封装成模块步骤:

1.同路径的Maven模块

2.pom文件引入模块依赖,根据代码检查依赖并补全,确保依赖完全自洽

3.模块拆分完成

Maven模块之间的关系

继承和聚合

继承: 父子模块:

父模块:(pom标记,父模块独有,其依赖可以被子模块依赖继承,被所有的子模块共同持有,其依赖一般为公共通用依赖) 使用上 比如上文的需要使用

子模块: 独有的依赖

继承的优点:简化依赖配置、统一管理依赖

与java的继承特点近似,不支持多继承 但是支持多重继承,因此可以实现更复杂的模块

Maven打包方式:

  • jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)

  • war:普通web程序打包,需要部署在外部的tomcat服务器中运行

  • pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理

在项目中都是先设计好模块之后,再开始创建模块,开发项目。 那此时呢,一般都会先创建父工程 tlias-parent,然后将创建的各个子模块,都放在父工程parent下面。 这样层级结构会更加清晰一些。

Maven的版本锁定功能

一般在父类提前制定,通过properties = ?来设定参数值, ${***.version}来接收参数,从而达到函数式

优点是 统一管理各个依赖的版本