Maven基础
学习笔记仅供参考
作者--Alianer
前言
-
原理图以来源于黑马程序员的教程资料,大部分实操截图均为自己上传
-
基本上是看黑马视频自己摘抄的笔记,会不定时回来过一遍知识,根据自己的理解不断改进笔记
Maven基本概念
Maven简介
- maven本质是一个项目管理工具,将开发和管理的过程抽象成为一个对象模型(POM)
- POM(Project Object Model)
Maven的作用
- 项目构建:提供标志的跨平台的自动化项目构建方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
- 统一的开发结构:提供标准的、统一的项目结构
Maven安装与配置
配置环境变量
- 在系统变量里面添加一个名字为
MAVEN_HOME
变量为maven安装路径 - 在系统变量Path中添加
%MAVEN_HONE%\bin
的变量值 - 完成后打开终端,输入命令
mvn
检查是否添加成功
配置本地仓库
- 安装配置完成后,在C盘的用户目录下会有个.m2目录即本地仓库,在.m2->repository下存放了本地的资源
- 如果需要自己配置仓库到别的地方,需要创建一个目录包含repository目录,然后再maven的安装目录下找到
- conf->settings.xml 在里面做出如下修改
- 找到settings下的注释中的
<locatlRepository></locatlRepository>
复制到注释外,里面的路径就是自己刚刚创建的本地仓库的路径
配置镜像仓库(因为maven默认使用的中央仓库在国外,下载或取资源较慢)
- conf->settings.xml 在里面做出如下修改
- 找到
<mirrors></mirrors>
里面已经有了注释好的模板,复制粘贴到mirrors标签里面 - 我这里使用的是阿里云的镜像仓库
Maven仓库
仓库是用于存放资源,包括各种jar包
-
本地仓库:自己电脑上存储的资源仓库,链接远程仓库获取资源
-
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
-
中央仓库:Maven团队维护,存储所有资源的仓库
中央仓库的jar包都是开源的,不存储具有版权的资源
-
私服:部门/公司范围内存储仓库,从中央仓库获取资源
- 私服一般保存具有版权的资源,包含购买或自主研发的jar包
- 一定范围内共享资源,仅对内开放,不对外共享
-
Maven坐标
- 坐标是maven用于描述仓库中资源位置的
- maven坐标组成:
- groupld:定义当前maven项目隶属组织的名字(通常是域名反写,例如:org。mybatis)
- artificial:定义当前maven项目名称(通常是模块名称,例如CRM、SMS)
- version:定义当前版本号
- maven坐标使用唯一标识,唯一定位资源位置,通过该标识开源将资源的识别与下载工作交给机器来完成
创建Maven工程
Maven工程的目录结构
在和src同级目录下还需要一个pom.xml配置文件。具体可以去找开源的jar包里面查看。
maven项目构建命令
在项目的src目录下打开终端执行以下命令行进项目构建,第一次执行的时候需要下载插件,速度较慢
mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库
插件创建工程
创建工程格式(在cmd命令行下执行,有些windows powershell无法识别到选项的命令)
mvn archetype:generate
-DgroupId={pro-packging} #项目包名
-DartifactId={pro-name} #项目的名字
-DarchetypeArtifactId=maven-archetype-quickstart #项目的类型
-DinteractiveMode=false #关闭交互模式
创建java工程
mvn archetype:generate -DgroupId=com.pg -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
创建web工程
mvn archetype:generate -DgroupId=com.pg -DartifactId=web-pro -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false
idea下使用Maven
创建工程
1.新建一个maven项目(具体名称路径包名自己定义)
2.配置成自己的maven,用idea自带绑定的也行
3.创建完成后可以在左侧看见最基础的目录结构和右侧的一个maven生命周期管理和插件管理
原型模板创建maven工程
1.选择模板创建java工程,之后添加项目信息完成创建
2.创建成功的目录,这里的模板没有给我们添加resources资源目录,我们可以自行添加
1.模板创建web工程,之后添加项目信息完成创建
2.创建成功之后的目录结构如下,这里模板没用给我们创建test目录,我们需要则手动添加
在WEB-INF目录中,applicationContext.xml和logj.xml可以先删除,web.xml里面的有些配置可以根据需要做出删减
3.在maven资源坐标网中搜索找到tomcat的插件依赖Maven Repository: Search/Browse/Explore (mvnrepository.com)
4.复制依赖到pom.xml中(可以修改一下端口号和虚拟路径)
5.在webapp下新建一个index.jsp写上一点内容方便测试
6.找到并且刷新一下maven依赖,选中刚刚添加进来的tomcat插件选择run
7.成功运行如下,根据地址打开网页即可看见刚刚编写的index.jsp内容了
依赖管理
依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被资源的资源如果依赖于其他资源,那么当前的项目则间接依赖于其他资源
依赖传递冲突问题
- 路径优先:当依赖中出现相同资源时,层级越深,优先级越底
- 声明优先:当资源在相同层级呗依赖时,配置顺序考前的覆盖靠后的
- 特殊优先:同级下配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖指的是对外隐藏当前所依赖的资源(项目内的)
在pom的依赖中添加<optional>true</optional>
即可实现</