翻译为“专家”,“内行”(在这指项目构建专家)
Maven是Apache基金会下一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
跨平台:可以再Windows、Linux、Mac os等系统上运行
Maven的最大作用就是构建项目。
什么是构建
Maven的作用
1.创建项目——创建的项目具有统一的项目结构
2.引入依赖的jar文件——jar包会存放在仓库中
3.打包发布项目——可以将项目打包成开发人员指定的类型,用于部署到Web容器。还可以将项目打包到仓库中,方便项目的相互依赖。
Maven模型
1.项目对象模型(Project Object Model):通过 pom.xml 描述项目基本信息,并加载项目
2.依赖管理模型(Dependency):管理jar包以及jar包之间的依赖,需要什么jar包只要在pom.xml文件中配置就可以,Maven会自动下载到本地jar包仓库中(从central(中央仓库)、b2b(私服仓库)、local(本地仓库)仓库中下载)
3.Build lifecycle phases:Maven 构建项目的整个生命周期过程是由一个一个插件完成的。每个插件完成一个特殊的功能,并产出一些文件。
Maven的运行依赖于生命周期中的每一个阶段,每一个阶段都对应一个或多个插件,每个插件执行一个功能。
本地仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
远程仓库——Nexus私服
私服也属于远程仓库的一种,只是这个远程仓库的地址是本地服务器而已
配置在局域网环境中,为局域网中所有开发人员提供jar包的统一管理
本地仓库(本机)--->私服(局域网)--->中心仓库(外部网络)
远程仓库——其他公共库
一些知名公司将收集的依赖构建而成的仓库,并将仓库地址发布到网络中提供其他用户使用。比如阿里巴巴的公共库
远程仓库——中央仓库
由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令时下载到需要的构件。中央仓库就是一个默认的远程仓库。Maven的安装文件默认带了中央仓库的配置
maven自己的中央库访问速度很慢
公司开发的自己的jar包等其他代码源,不想公开分享,就只有放到私有服务器上存放
有的jar包或者代码源中央库没有的,或者使用得老版本中央库没有的,我们需要私有服务器存放这些数据,用到的时候下载的速度也会很快
在Maven项目中都包含一个pom.xml文件,在该文件中通过配置依赖的坐标,Maven项目就会去仓库中查找并引入所需要的依赖。
仓库优先级:本地→私服→其他公共仓库→中央仓库
1.确认jdk是否已安装?(maven3.3以上的版本要求JDK最低为1.7)
echo %JAVA_HOME%
java -version
javac
2.下载maven网址:Maven – Download Apache Maven
3.对下载的apache-maven-3.6.1-bin.zip进行解压,解压到硬盘目录(解压目录最好不要有中文字)即可完成maven的安装
4.配置环境变量
MAVEN_HOME------->其值为maven安装的路径
path------->其值为maven安装的路径\bin
5.在dos窗口中运行命令mvn -v或mvn -version,显示如图所示的内容证明安装成功了。
Maven安装目录分析
bin:含有mvn运行的脚本(二进制可运行指令)
boot:含有plexus-classworlds类加载器框架(java语言在加载的时候有一个类加载器,Maven有自己的专用的类加载器,jdk类加载器将Maven类加载,Maven再启动自己的类加载器加载其它Maven类)
conf:含有settings.xml配置文件
lib:含有Maven运行时所需要的java类库(Maven本身是用Java写的,它的运行需要一些资源jar包)
LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍
Maven的主要功能之一是管理构建项目所需要的jar文件,那么从哪里下载,下载到哪里就成为必须要解决的问题,Maven使用settings.xml指定这些配置信息。
默认仓库——当前用户路径C:\Users\[UserName]\.m2
全局范围:Maven安装目录,如:D:\ruanjian\apache-maven-3.6.1\conf\settings.xml,对所有用户均有效。
修改默认仓库的位置
用户范围:当前用户目录,如D:\ruanjian\maven\settings.xml,仅对当前用户生效。
两个目录都可以出现settings.xml,最后取合并后的结果,如果存在重复定义,那么当前用户目录的配置项优先生效。通常是把全局范围内的settings.xml作为模板复制到用户范围目录中。
settings.xml使用仓库来管理jar文件的下载,分为本地仓库和远程仓库,分别使用下面的两个节点配置:
https://blog.csdn.net/qidasheng2012/article/details/78152581
注意:用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用默认路径仓库
在IDEA中构建Maven项目
1.创建maven项目
2.设置项目的maven坐标
3.设置maven项目的属性
Maven项目的标准目录结构
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
src/main/webapp—— Web项目根目录
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目编译构建的输出位置(可以自动生成)
pom.xml——maven项目核心配置文件
案例:
详见第1个Maven项目.txt
一个项目依赖另一个项目
详见第2个Maven项目.txt(依赖1)
详见第3个Maven项目.txt(依赖1、2)