1.dependencyManagement与dependencies的区别是什么?
- 'dependencies'是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
- 'dependencyManagement'是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)
2. maven中如何实现聚合关系?
<modules>...</modules>
3. maven中继承与聚合的联系与区别?
联系: 继承与聚合都属于设计型模块,打包方式都为pom,常将两种关系制作到同一个pom文件为
区别:
- 继承用于简化依赖配置、统一管理依赖版本,是在子工程中配置继承关系
- 聚合用于快速构建项目,是在父工程中配置聚合的模块
Maven相关概念:
分模块设计
在设计程序会有几种常见的程序问题拆分策略-分模块设计--策略:
- 策略一:按照功能模块拆分,比如:公共组件,商品模块,搜索模块,购物车模块,订单模块等。
- 策略二:按层拆分,比如:公共组件,实体类,控制层,业务层,数据访问层。(常见中小型程序设计)
- 策略三:按照功能模块+层拆分。 (大型应用)
功能模块组件封装:
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}来接收参数,从而达到函数式
优点是 统一管理各个依赖的版本