Maven本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
Maven的作用- 项目构建:提供标准的、跨平台的自动化项目构建方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
- 统一开发架构:提供标准的、统一的项目结构
下载与安装
官网地址:https://maven.apache.org/
Maven是绿色版软件、解压即可使用
相关配置需要在环境变量中进行如下配置,maven依赖Java,JAVA_HOME的配置是必须的,另外需要配置MAVEN_HOME,并且在Path下也需要 进行配置
Maven基础概念 仓库
- 仓库用于存储jar包
- 仓库分类
- 本地仓库:自己电脑上存储资源的仓库,通过连接远程仓库获取资源
- 远程仓库:非本机电脑上的仓库,为本地仓库提供资源
- 中央仓库:Maven团队维护,涵盖了世界上99%的jar包
- 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
- 私服的作用:
- 保存具有版权的资源,中央仓库中的jar包都是开源的,不能存储具有版权的资源
- 在一定范围内共享资源,仅对内部开放,不对外部共享
-
坐标的作用:
-
用于描述仓库中资源的位置
-
可以在这里寻找资源对应的坐标 https://mvnrepository.com/
-
使用唯一标识,唯一性定位资源位置,通过该表示可以将资源的识别与下载工作交友机器完成
-
-
坐标的主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
- artifactId:定义当前Maven项目名称(通常是模块名称)
- version:定义当前项目版本号
-
本地仓库配置
本地仓库用来存储从远程仓库下载过来的资源,默认路径存储在c盘用户的文件夹下面,我们需要修改他的保存路径,因为c盘一般都是我们的系统盘,放在里面不合适,打开maven安装位置下的配置文件settings.xml,进行如下配置
D:mavenrepository -
远程仓库配置
从中央仓库下载数据,相当于从国外下载数据,速度会非常的慢,我们可以设置镜像仓库配置,这是一个阿里提供的镜像仓库,相当于中转站,完全跟中央仓库一样,我们只需要配置settings.xml文件,从阿里的镜像仓库下载即可
nexus-aliyun central Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public
maven工程的创建
maven创建web工程
新建模块的时候选择maven模块,并且选择webapp的模板
tomcat安装与启动
我们需要配置tomcat8与maven的插件,在pom.xml文件中进行以下配置
alfresco https://artifacts.alfresco.com/nexus/content/repositories/public/ org.apache.tomcat.maven tomcat8-maven-plugin 3.0-r1655215 8080 UTF-8
需要启动工程只需要双击以下按钮即可
依赖管理 依赖配置
-
依赖指当前项目运行所需要的jar,一个项目可以设置多个依赖
-
格式:
junit junit 4.11
-
依赖具有传递性
- 直接传递:在当前项目中通过依赖配置建立的依赖关系
- 间接传递:被依赖的资源如果依赖其他资源,其他资源与项目的关系就是间接传递
-
间接传递的冲突问题
- 路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置相同资源的不同版本,后配置的覆盖先配置的
-
可选依赖
- 可以对外隐藏当前所依赖的资源
junit junit 4.11 true -
排除依赖
- 主动断开依赖的资源,被排出的资源无需指定版本
- 例如junit内部需要依赖hamcrest-core,而我们不想使用该依赖,可以排除掉
junit junit 4.11 test org.hamcrest hamcrest-core
- 依赖的jar默认情况下在任何地方都可以使用,可以通过scpoe标签设定其作用范围
- 作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)



