maven-尚硅谷

Maven是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有着重要作用,Maven是一款在大型项目开发过程中不可或缺的重要工具

一、目前掌握的技术

在这里插入图片描述

二、生产环境下开发对maven的需求

1、一个项目就是一个工程
如果项目非常大,就不适合继续使用package来划分。而是每个模块对应一个工程分工,协作。借助于maven,就可以将一个项目拆分成多个工程!!!

2、项目中的jar包必须手动黏贴到 WEB-INFO下的lib目录中
导致的问题:同样的jar包文件会重复出现在不同的项目工程中,一方面浪费存储空间,一方面也让项目比较臃肿
借助于maven,可以将jar包仅仅保存在仓库中,有需要使用的工程,引用这个文件接口,并不需要真的把jar包复制过来

3、jar包需要自己下载
借助于maven可以以一种非常规范的方式来下载jar包。因为所有知名的框架或者第三方工具的jar包已经按照统一的规范放在了中央仓库中!

4、jar包依赖的其他jar包,需要自己手动加入到项目中
如果jar包之间的依赖关系都需要程序员自己非常清楚的了解,就会极大地增加学习成本

三、构建的概念
1、maven是一款服务于java平台的自动化构建工具
gradle

2、什么是构建?
编译 --> 部署 --> 运行

3、运行时环境
在这里插入图片描述
运行时环境 其实是一组jar包的引用,并没有将jar包本身copy到工程中,所以不是目录!!
其中 :
jre system library ==> jdk 中的核心jar包
apache tomcat v6.0 ===> 和tomcat 相关的包

4、web工程的目录结构
在这里插入图片描述
一个BS项目最终运行的不是动态web工程本身,而是这个web工程 "编译的结果”

5、自动化构建和构建环节
构建过程中的各个环节
【1】清理 :将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
【2】编译:将java源程序编译成class字节码文件
【3】测试:自动测试,自动调用junit程序
【4】报告:测试程序的执行结果
【5】打包:动态web工程打成war包,jar工程打成jar包
【6】安装:maven的特定概念==》将打包得到的文件复制到“仓库”中的指定位置
【7】部署:将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行

四、maven的安装:

1、检查 JAVA_HOME 环境变量 (为什么?maven是通过java编写的!!)
在这里插入图片描述
2、解压Maven核心程序的压缩包,放在一个非中文无空格的环境下

3、配置Maven 相关的环境变量
在这里插入图片描述
4、通过 mvn -v 命令查看maven版本 判断是否安装成功!!
在这里插入图片描述

五、Maven的核心概念

1、约定的目录结构
2、pom
3、坐标
4、依赖
5、仓库
6、声明周期、插件、目标
7、继承
8、聚合

六、第一个Maven工程

maven工程的目录结构是固定的
1、创建约定的目录结构
在这里插入图片描述
1)根目录:工程名
2)src目录:存放源码
3)pom.xml :Maven工程的核心配置文件
4)main 目录:存放主程序
5)test目录:存放测试程序
6)java目录:存放java源文件
7)resource:存放框架或者其他工具的配置文件

2、为什么要遵守约定的目录结构
Maven负责我们项目的自动化构建,以编译为例,Maven要想进行编译,那他必须知道java源文件保存在哪,这就需要我们遵循约定的目录

七、常用maven命令

1)注意:执行与构建过程相关的maven命令,必须进入pom.xml所在的目录

与构建过程相关:编译 测试 打包

2)常用命令:
【1】mvn clean :清理
【2】mvn compile: 编译主程序
【3】mvn test-compile :编译测试程序
【4】mvn test : 执行测试
【5】mvn package :打包
【6】mvn install : 打包并将结果复制到本地仓库

八、关于联网问题

1)maven的核心程序中仅仅定义了抽象的生命周期,具体的工作必须由特定的插件来完成,而插件本身并不包含在Maven的核心程序中

2)当我们执行的Maven命令需要用到插件时,Maven核心程序会先到本地仓库中去查找,maven核心程序在本地仓库中找不到需要的插件,会自动连接外网,到中央仓库中下载,如果不能联网,则构建失败

九、POM

1、含义:project object model 项目对象模型

2、pom.xml对于Maven工程是核心配置文件,与构建过程有关的一切配置都是在这里配置的

十、坐标

1、maven中的坐标:
使用下面三个向量在仓库中唯一定位一个maven工程
1)groupid :公司或组织的域名倒叙
2)artifactid : 模块名(项目名)
3)version:版本

2、Maven工程的坐标与仓库中路径的对应关系
在这里插入图片描述
groupid + artifactid + version 组成文件的路径
artifactid + version 组成文件名

十一、仓库

1、分类:
1)本地仓库:
当前电脑上部署的仓库服务,即存放第三方jar包和插件的文件夹
2)远程仓库:
① 私服 : 搭建在局域网环境中,为局域网内的所有Maven工程服务
在这里插入图片描述
②中央仓库:架设在internet上,为全世界所有的Maven工程服务
③中央仓库的镜像:为了分担中央仓库的流量,用于提升用户的访问速度

2、仓库中保存的内容:
1)Maven自身所需要的插件
2)第三方框架或者工具的jar包
3)我们自己开发的maven工程

十二、依赖

1、Maven解析依赖信息时,会到本地仓库中查找被依赖的jar包
对于我们自己开发的maven工程,使用mvn install 将其打包装进仓库

2、依赖的范围

  1. compile 范围依赖
    对主程序是否有效? 有效
    对测试程序是否有效? 有效
    是否参与打包? 参与
    在这里插入图片描述
    在这里插入图片描述
    == 开发 部署 运行时都涉及到compile范围的依赖 ==

2)test范围依赖
对主程序是否有效? 无效
对测试程序是否有效? 有效
是否参与打包? 不参与
典型例子 : junit

  1. provided 范围依赖: 有些jar包,在开发的时候需要,但是部署和运行的时候不需要
    对主程序是否有效? 有效
    对测试程序是否有效? 无效
    是否参与打包? 不参与
    是否参与部署? 不参与
    典型例子 : servlet-api.jar
    在这里插入图片描述

十三、生命周期

1、什么是maven的生命周期?

十四、依赖【高级】

1、依赖的传递性
优点:可以传递的依赖,不必在每个模块工程中重复声明
【注意】 非compile类型的依赖不能传递,所以在各个工程模块中,有需要就得重复声明

2、依赖排除
在这里插入图片描述
依赖排除的设置方式
在这里插入图片描述

3、依赖的原则说明
在这里插入图片描述

4、统一管理依赖的版本

十五、继承

如何保证父工程所有子工程对某个依赖的版本保持一致

十六、聚合

1、作用:一键安装各个模块的工程
install时只需要install聚合工程,maven会分析各个模块之间的依赖关系,并按照顺序构建

2、配置方式:在一个总的聚合工程中,配置各个参与的模块
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值