10 Maven高级使用

Maven是一个项目管理工具,主要作用是在项目开发阶段对Java项目进行依赖管理和项目构建。
主要完成:清理,编辑,测试,报告,打包,部署等功能。

1、Maven依赖传递

当引用一个包的时候,会连带引入相关联的包,例如:

2、Maven依赖冲突

当引入不同版本的包是,如果这两个包都依赖某个子包,就会导致这个子包会出现两个不同的版本被引入。

解决冲突的方法

2.1、默认规则

使用第一声明者优先原则,谁放在前边,就用谁引入的子包。

使用路径近者优先原则,导入依赖层次越深,优先级越低,直接导入优先级高于依赖导入。

2.2、排除依赖

将包的依赖导入给排除掉。

2.3、版本锁定

 

 通过dependencies再导入版本的时候,就不需要再指定版本了。

3、分模块构建工程

在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发。而且拆分出的模块可以非常容易的被其他模块复用。

常见的拆分方案有两种:

第一种:按照业务模块进行拆分,拆分成用户模块,订单模块,购物车模块,每个模块对应就是一个maven工程。

第二种:按照层进行拆分,持久层,业务层,表现层,每个层对应就是一个maven工程。

不管那种拆分方法,

不管用那种拆分方式,通常都会提供一个父工程,将一些共用的代码和配置提取到父工程中进行统一管理和配置。

公共代码放在parent中。不同工程根据层次关系相互依赖。

3.1、工程继承

子工程继承父工程,从父工程中继承已经引入的Jar包。

父工程打包方式必须是pom,子工程通过parent标签进行父工程的继承,parent内部的artifactId就是父工程的标识。

3.2、工程聚合

在maven工程的pom.xml文件中,可以通过<modules>标签将其他Maven工程聚合到一起,聚合的目的是为了进行统一操作。

例如拆分后的maven工程有多个,要进行打包,就需要针对每个工程分别执行打包指令,这个时候可以通过<modules>标签将这些工程统一聚合到一个maven工程中,需要打包的时候,只需要在此工程中执行一次打包命令,其下被聚合的工程都会被打包。

在父工程中,将其它工程集合在一起,未继承父工程的工程也可以聚合进来。

打开这个窗口之后,工作目录设置成聚合的工程,就可以统一执行相关命令。 

在父工程中锁定包的版本,具体引用可以放在子包里边。

4、操作例子

 别人的开源源码:https://github.com/owenma/parent

posted @ 2022-02-21 22:04  草莓爸  阅读(93)  评论(0编辑  收藏  举报