Maven详解

 [1] maven是什么?

 Maven 是一个项目管理和综合工具Maven 提供了开发人员构建一个完整的**生命周期**框架。开发团队可以自动完成项目的基础工具建设Maven 使用标准的目录结构和默认构建生命周期。 在多个开发团队环境时,Maven 可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven 让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。
概括地说,Maven 简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven 增加可重用性并负责建立相关的任务。有了maven你的工作就简单了.

[2] maven能干什么? 

1.1 多模块开发

pom.xml 

每一个maven项目都有一个pom文件.Project Object Model **项目对象模型**,maven作为一个项目开发管理工具,将每一个项目看成是一个对象.pom文件是描述这个对象的数据文件(**元数据**).通过pom文件的内容,maven软件就可以管理控制项目.

1.2 生命周期

maven管理项目时,总是先加载pom然后执行声明周期的命令逻辑,maven项目从创建开始,要经历如下几个生命周期环节.
**概念**: 生命周期,对象目标经历的环节,经历的步骤.

1.3 maven命令

- validate:
命令格式:mvn validate
底层执行的maven命令 实际上 .校验一下 当前没问结构,环境是否符合maven项目开发要求.

- compile:
命令格式:mvn compile
maven项目的编译,只负责main中相关内容的编译输出,默认输出到 target/classes

- test
命令格式:mvn test
执行项目的单元测试. 会生成单元测试报告,包含前一步的compile,并且将测试代码编译输出

- package

命令格式:mvn package
将项目打包
**注意**: 根据packaging类型不一样,打包的输出结果就不同.类型有三种常用的
jar/war/pom.第三种类型没有代码,只能作为父工程或者聚合工程使用

- install
命令格式:mvn install
将项目打包,安装存放到本地库(**远程库,本地库**.目前的远程库 central中央库)

- site

命令格式:mvn sit
根据Maven配置生成一个html页面集.针对这个项目做的可观测页面.

- deploy
命令格式:mvn deploy
和私服有关.公司开发,传递jar包的方式

**idea自定义运行命令**

执行自定义maven命令,添加一个选项-X可以在控制台打印maven执行命令的详细日志.

目的是在出错的时候,帮助我们提供更准确的定位信息.

[3] maven是如何工作的?

了解掌握3种特性: 依赖,继承,聚合

- 不适用spring initializr插件创建maven项目

1.1:依赖
- 作用是什么: **代码项目的复用**
- 如何使用: dependency标签
- 特性是什么: 依赖有传递性
- idea中想要观察依赖的传递性: 传递性是强制传递,maven允许提出不需要的传递

pom.xml

 1.2:继承特性(多模块2)

- 场景

在同一个项目中不同模块的开发者中,各自维护自己的项目依赖关系,有可能出现图中的情况,相互关联的两个模块同时依赖A.jar,但是版本不同,会导致严重的结果,相互之间的关系存在**兼容问题**. 为了保证没有兼容问题.

- 继承意义
为了统一多模块协作多人开发版本资源,maven提供了一个多模块特性--继承

- 继承的实现

确定父子关系(文件夹结构就是父子关系)
父工程packaging标签值必须是pom,子工程使用parent标签指向父工程(idea自动帮你实现了)
区分开类的继承,和maven的继承细节.区分开依赖和继承的区别

细节: parent标签详解

 relativePath: 子工程寻找父工程pom文件的相对路径地址.如果子工程无法找到父工程的pom,无法实现继承.这个值有三种配置方式
1. 默认值(不给标签) ../pom.xml
2. 自定义值,根据你的pom位置,合理的编写路径信息(跨文件夹级别继承)
3. 空值 <relativePath/> 只在本地库找父工程的pom文件,如果本地库没有,从远程库下载
- 本地库资源路径(必须掌握通过maven标签找到库资源)
- 找本地库在哪c:/{User}/.m2/repository/org/springframework/boot/spring-boot-starter-parent/2.7.13

继承的本质

​ 子工程继承父工程, pom文件的继承,继承之后,获取的内容就是pom文件中的标签.
​ pom文件中标签的复用** 依赖才是代码的复用
- 常见的继承标签
- groupId
- version
- properties
- dependencies
- dependencyManagement

dependencyManagement标签

**依赖管理**,在依赖管理标签定义的是依赖版本,dependencyManagement包含了一套完整的dependencies.
一旦在项目中定义了依赖管理,再使用依赖的时候,就可以**省略版本号**了.所以我们在父工程统一规划好所有的依赖资源版本,dependencyManagement被子工程继承之后,拥有了相同的特性,相当于做到了资源版本的统一定义,子工程尽可能不重写版本.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值