maven是什么[what?]
- maven是一款服务于Java平台的自动化构建工具,用来构建web项目以及管理项目中使用的jar包。
- maven的构建:
概念:以Java源文件、框架的配置文件、HTML、图片等资源文件为“原材料”,去“生产”一个项目的过程称为构建。 - maven构建过程中的各个环节:
[1]清理:将以前编译得到的旧的class字节码文件删除,为下一次的编译做准备
[2]编译:将Java源程序编译成class字节码文件
[3]测试:自动测试,自动调用junit程序
[4]报告:测试程序的执行结果
[5]打包:动态web工程打war包,Java工程打jar包(一般用于前后端分离的项目中)
[6]安装:maven特定的概念——将打包得到的复制到“仓库”中指定位置中
[7]部署:将动态的web工程生成的war包复制到servlet容器(tomcat)指定的目录下,使其可以运行
安装maven
- 检查Java环境,是否安装了jdk
C:\Users\User009>java -version
java version “1.8.0_131”
Java™ SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot™ 64-Bit Server VM (build 25.131-b11, mixed mode) - 解压maven核心程序的压缩包,放在一个无中文无空格的路径下
D:\apache-maven-3.6.1 - 配置maven相关的环境变量
[1]MAVEN_HOME
[2]PATH
- 验证:运行mvn -v命令查看maven的版本
C:\Users\User009>mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: D:\apache-maven-3.6.1\bin…
Java version: 1.8.0_131, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: zh_CN, platform encoding: GBK
OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “windows”
maven的核心概念
[1]
约
定
的
目
录
结
构
\color{blue}{约定的目录结构}
约定的目录结构
[2]
P
O
M
\color{blue}{POM}
POM
[3]
坐
标
\color{blue} {坐标}
坐标
[4]
依
赖
\color{red} {依赖}
依赖
[5]仓库
[6]生命周期
[7]继承
[8]聚合
创建一个maven工程
- 创建约定的目录结构
[1]根目录:工程名
[2]src目录:源码
[3]pom.xml文件:maven工程的核心配置文件
[4]main目录:存放主程序
[5]test目录:存放测试程序
[6]resources:存放框架或其它工具的配置文件 - 我们为什么要遵守约定的目录结构呢?
[1]maven要负责我们这个项目的自动化构建,以编译为例,maven要想自动进行编译,那它必须知道Java源文件放在哪里
[2]如果我们自己定义的东西想让框架和工具知道,有两种办法
&以配置的方式明确告诉框架
例如SSM框架中,可以在配置文件中配置spring配置文件的路径以及spring配置文件的名称:
&遵守框架内部已经存在的约定
例如:log4j日志框架,配置文件名称和配置文件的存放路径是已经约定好的
&遵守的规则:约定>配置>编码
maven常用的命令
[1]注意:执行与构建过程相关的maven命令,必须进入pom.xml文件所在的目录。
[2]常用命令:
&mvn clean 清理
&mvn compile 编译主程序
&mvn test-compile 编译测试程序
&mvn test 执行测试
&mvn package 打包
&mvn install 安装
&mvn site 生成站点
关于联网的问题
[1]maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成,而插件本身并不包含在maven的核心程序中。
[2]当我们执行的maven命令需要用到某些插件时,maven的核心程序会首先到本地仓库中查找。
[3]本地仓库的默认位置:[系统中当前登录用户的家目录]\.m2\repository
[4]maven的核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库中下载
[5]如果此时无法连接外网,则构建失败
[6]修改默认本地仓库位置可以让maven核心程序到我们事先准备好的目录下查找插件
(1)找到maven解压目录下\conf\settings.xml
(2)在settings.xml文件中找到localRepository标签
(3)将<localRepository>/path/to/local/repo</localRepository>从注释中取出
(4)将标签体内容修改为已经准备好的maven仓库目录
<localRepository>D:\repo</localRepository>
POM
[1]含义:Project Object Model 项目对象模型
DOM Document Object Model 文档对象模型(js中的模型)
[2]pom.xml对于maven工程而言,是核心的配置文件,与构建过程相关的一切设置都在这个文件中进行配置
坐标
[1]数学中的坐标
&在平面上:使用X、Y两个向量就可以唯一的定位平面中的任何一个点
&在空间中:使用X、Y、Z三个向量就可以唯一的定位空间中的任何一个点。
[2]maven的坐标
使用下面三个向量就可以在仓库中唯一的定位一个maven工程
[1]groupId:公司或组织域名倒序+项目名
例如:<groupId>org.apache.commons<groupId>
[2]artifactId:模块名
例如:<artifactId>commons-jexl3</artifactId>
[3]version:版本
例如:<version>3.1</version>
[3]maven工程的坐标与仓库中路径的对应关系
仓库
[1]仓库的分类:
&本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有maven工程服务
&远程仓库:
(1)私服:搭建在局域网环境中,为局域网范围内所有maven工程服务
(2)中央仓库:架设在Internet上面,为全世界所有maven工程服务
(3)中央镜像仓库:为了分担中央仓库的流量,提升用户的访问速度
[2]仓库中保存的内容:maven工程
&maven自身所需要的插件
&第三方框架或工具的jar包
&我们自己开发的maven工程