Maven入门学习笔记
Maven
Maven简介
Maven是什么?
Maven翻译为“专家”、“内行”,是Apache下的一个纯java开发的开源项目
定义:Maven是一个项目管理工具,它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的工具
Maven能解决什么问题?
1、当我们编写web项目时,需要导入大量的jar包,jar包之间可能存在冲突
2、我们的项目中通常包含大量的java文件,而java文件是需要进行编译的
3、写完代码之后,一般会进行单元测试,而编写单元测试很繁琐
4、项目中的资源一般需要打包整合,如果是web项目,需要发布到web服务器
上述四点,Maven均可以实现,可以说只要关于项目管理的事情,Maven都可以做
Maven的两个核心功能[重点]
依赖管理
传统WEB工程引入jar包:需要我们从互联网上下载相关jar包,再将其复制到工程中,随着依赖jar包数量的增多,会导致工程变得很大
基于Maven的WEB工程引入jar包:我们直接在Maven中依赖配置文件pom.xml文件中直接添加相关jar包的坐标,Maven会解析jar包坐标再到一个专门用于存放jar包的仓库中去寻找到相应的jar包

Maven本地仓库存储模式

完整的坐标需要:公司名称(域名倒写)、项目名、版本号
项目构建
* 我们开发项目,需要经过编译、测试、打包、安装、部署等一系列过程
* 什么是构建项目
指的是项目从编译、测试、打包、安装、部署整个过程都交给Maven来进行管理,这个过程称为构建
* 一键构建
指的是整个构建过程,使用Maven一个命令就可以完成
Maven安装和使用
Maven下载和安装
* Maven下载地址:https://maven.apache.org/download.cgi
* Maven是基于java语言开发的,因此Maven依赖于JAVA_HOME,解压(注意路径不要有中文)即可使用
* Maven目录结构
bin目录:存放了Maven的可执行脚本(命令)
boot目录:存放了Maven本身的引导程序,比如类加载器
conf目录:存放了Maven的相关配置文件
lib目录:存放了Maven本身运行所需要的一些jar包
* Maven环境变量
MAVEN_HOME:Maven安装目录
path:%MAVEN_HOME%\bin
测试Maven是否配置正确

Maven仓库[重点]
Maven仓库的分类
- 本地仓库:在开发者本地存储jar包的文件夹,通过Maven安装目录下的conf目录中的setting.xml配置文件配置本地仓库位置,之后基于Maven创建的工程会先从本地仓库中搜索对应jar包,如果本地仓库没有,本地仓库会去Maven中央仓库中下载对应jar包
- Maven中央仓库:由Maven团队维护的一个jar包仓库,包含了能从互联网上下载的所有jar包,但是访问速度堪忧
- 第三方仓库:针对访问Maven中央仓库的速度堪忧问题,第三方仓库对Maven中央仓库进行了克隆并部署在国内,访问速度上有很大提升
- 私服仓库:有些互联网公司针对自己公司开发需求,架设了一个私有仓库,里面包含了针对公司内部技术开发所需要的jar包,共给公司内部人员使用

Maven配置本地仓库
找到自己的仓库本地存放路径

复制该路径(D:\Maven\MyRepo)
找到Maven安装目录下conf目录中的settings.xml配置文件

编辑settings.xml配置文件,在大约55行处添加本地仓库配置

Maven配置国内镜像仓库
编辑settings.xml配置文件,在大约161行处添加阿里远程仓库配置

Maven仓库查找顺序[笔试题]
问题:通过依赖jar包坐标查找仓库顺序?
答案:本地仓库---->私服仓库----->中央仓库
注意:第三方仓库可以理解为私服仓库,比如:阿里云镜像是阿里搭建的私服
Maven工程的结构[重点]
传统开发JavaWeb工程遇到的问题

基于Maven创建的web工程目录结构

注意:上面的目录结构是web工程的结构,如果创建的是java工程,则将上面的webapp目录删除掉即可,图中的pom.xml配置文件是Maven工程的核心配置文件
Maven生命周期和插件
Maven常用命令和插件
1、clean
maven工程的清理命令,执行clean会删除target目录及内容(target目录中存放的内容是java源文件经过编译后生成的字节码文件)
首先生成字节码文件夹



2、compile
将src/main/java/目录下的代码进行编译,并将生成的class文件存入target目录中(也可以将配置文件存入target目录中)

3、test
maven工程的测试命令,作用是编译/src/test目录下的测试类,生成相应的字节码文件

4、package
maven工程的打包命令,对于Java工程执行package打包成jar包,对于Web工程执行package打包成war包

5、install
maven工程的安装命令,执行install将maven工程打成jar包或war包,并发布到本地仓库

6、deploy
maven工程部署命令,将jar或者war部署到私服中
Maven生命周期
maven对项目构建过程分为“三套独立的”生命周期,这三套生命周期分别是:
1、Clean Lifecycle(清理生命周期)
场景:当去公司开发时,会在已有的基础上进行开发,如果要运行,需要先执行clean清理掉target目录
2、Default Lifecycle(默认生命周期)
场景:整个项目的构建过程(编译、测试、打包、安装、部署)
3、Site Lifecycle(清理生命周期)不常用
场景:生成项目运行报告
注意:在同一个生命周期中的命令,若执行后面的命令,前面的命令会自动执行

Idea创建Maven工程[重点]
Idea配置本地Maven环境

Idea配置本地Maven环境优化
我们在idea中配置好本地Maven环境后,在使用该环境创建Maven工程时,Maven会默认从互联网下载默认骨架(模板),如果本机没有联网会卡顿一会儿,然后搜索本地骨架,现在可以通过配置如下内容,使得idea创建Maven工程直接搜索本地骨架:
-DarchetypeCatalog=internal -Dfile.encoding=GB2312

Idea基于Maven创建工程
创建java工程



注意:基于Maven创建java工程默认不会自动创建test目录下的resources目录,需要自行创建


设置Maven环境jdk版本(编译级别)和字符集(添加相关配置到pom.xml 网上查一下)
设置当前工程打包类型

注意:如果不指定打包类型,默认为jar包
引入单元测试(junit)相关依赖
Maven依赖搜索仓库地址:Maven Repository: Search/Browse/Explore (mvnrepository.com)

注意:建议根据使用人数来选择
将搜索到的依赖坐标复制到我们创建的maven工程的pom.xml文件中

创建Web工程
前期创建步骤同java工程一样,创建完成后需要将Java工程转换为Web工程
需要安装一个插件:JBLJavaToWeb

Java工程转换为Web工程



发布WEB工程
idea使用外置Tomcat运行[重点]


注意:该中方式与之前编写servlet一样
idea使用Maven内置Tomcat插件[了解]
在工程pom.xml文件中添加maven内置tomcat插件,这种方式启动的tomcat不会自动弹出浏览器窗口
依赖范围

注意:在之前配置单元测试(junit)依赖坐标时,删除了

浙公网安备 33010602011771号