目录
第一章 Maven简介
1.1 软件开发中的阶段
需求分析:分析项目具体完成的功能,有什么要求,具体怎么实现。
设计阶段:根据分析的结果,设计项目使用什么技术,解决难点。
开发阶段:编码实现功能,编译代码,自我测试。
测试阶段:专业的测试人员,测整个项目的功能是否符合设计要求。出一个测试报告。
项目的打包、发布阶段:给用户安装项目。
1.2 Maven能做什么
(1)项目的自动构建,帮助开发人员做项目代码的编译、测试、打包、安装和部署等工作。
(2)管理依赖:
依赖:x项目中需要使用的其他资源,常见的是jar包,比如项目要使用mysql驱动,我们就是项目依赖mysql驱动。
1.3 Maven-项目构建工具
(apache基金会)
1.打包
2.管理依赖***,联网下载。只需要一个配置文件即可。
3.项目结构更清晰
main:源码目录
java:.java文件
resources:配置文件
test:测试目录
java:测试的.java
resources:测试用到的配置文件
pom.xml:Maven工程的配置文件,在其中配置jar包的相关
target:目标,目的地
1.4 Maven 的核心概念
①POM : 一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型。maven把一个项目当做一个模型使用,控制maven构建项目的过程,管理jar依赖。
②约定的目录结构 : maven项目的目录和文件的位置都是规定的。
③坐标 : 是一个唯一的字符串,用来表示资源的。
④依赖管理 : 管理你的项目可以使用jar文件
⑤仓库管理 :你的资源存放的位置
⑥生命周期 (了解) : maven工具构建项目的过程,就是生命周期。
⑦插件和目标(了解):执行maven构建的时候用的工具是插件
⑧继承
⑨聚合
1.5 Maven生命周期:
Maven有三个内置的声明周期:
默认(default): 进行项目的编译和打包
1.验证(validate):验证当前的项目是否正确
2.编译(compile):编译项目的源代码
3.测试(test):使用单元测试测试编译的源代码
4.打包(package):利用编译的源代码,打包成相应的格式的包。jar/war
5.验证(verify):对测试结果进行检查
6.安装(install):把我们自己写的一些项目,安装到本地仓库,其他项目可以进行引用。
7.部署(deploy):私服。jar从maven中央仓库下载下来。
清理(clean):删除target目录
站点(site): 生成项目报告,站点,发布站点
通过这么几个要素来定位一个项目(jar)包,坐标
GroupId:团体,组织id。包名
ArtifactId:项目名。mysql-connector-java.jar
Version:版本号。
SNAPSHOT:快照版
LATEST:发布版本
RELEASE:稳定版本
依赖的范围:
scope标签就代表依赖的范围:
test:测试。只有在test环境下才生效。不参与打包和编译。
compile:编译。编译、测试、运行环境下都ok。参与打包。
runtime:运行时。参与打包。
provided:编译,运行,不参与打包。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
依赖的传递:
我们工程A.jar-------->依赖于mysql.jar
B.jar---------->依赖于A.jar,同样会引入mysql.jar
传递的原则:
1.最短路径优先
2.路径相同 先声明原则
3.依赖的排除
packaging标签:
jar:默认的格式
war:JavaWEB工程
pom:复合工程
第二章 Maven的核心概念详解
2.1 maven约定的目录结构
java
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
---/src
------/main #放你主程序java代码和配置文件
----------/java #你的程序包和包中的java文件
----------/resources #你的java程序中要使用的配置文件
------/test #放测试程序代码和文件的(可以没有)
----------/java #测试程序包和包中的java文件
----------/resources #测试java程序中要使用的配置文件
---/pom.xml #maven的核心文件(maven项目必须有)
2.2 仓库:
1)仓库是什么: 仓库是存放东西的, maven的仓库存放的是:
1. maven工具自己的jar包
2. 第三方的其他jar,比如项目中要使用的mysql驱动
3. 自己写的程序,可以打包为jar,存放到仓库
2)仓库的分类
本地仓库, 就是你的个人计算机上的文件夹,存放各种jar,
默认路径:是你登录操作系统的账号的目录中/.m2/repository
如: C:\Users\admin\.m2\repository
远程仓库, 在互联网上的,使用网络才能使用的仓库
①:中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,
https://repo.maven.apache.org :中央仓库的地址
②:中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。
③:私服,在公司内部,在局域网中使用的,不是对外使用的。
3)仓库的使用,maven仓库的使用不需要人为参与。
开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像—>中央仓库
2.3 pom:项目对象模型,是一个pom.xml文件
即Project Object Model ,Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是maven的灵魂,所以,maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。
xml
<!-- project是跟标签,后面的是约束文件 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- pom模型的版本: 就是4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!--坐标-->
<groupId>com.iflytek</groupId>
<artifactId>mybatisTest01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--项目打包类型-->
<packaging>war</packaging>
<!--依赖-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>
</project>
```
2.4 坐标
坐标组成是groupId,artifactId,version。
坐标作用:确定资源的,是资源的唯一标识。在maven中,每个资源都是坐标。
<!--groupId: 组织名称,代码,团体或者单位的表示,这个值通常使用公司域名的倒写com.iflytek-->
<!--artifactId: 项目名称-->
<!--version: 项目的版本号-->
项目使用坐标:
1、 每个maven项目,都需要有一个自己的坐标
2、管理依赖,需要使用其他的jar,也需要使用坐标作为表示;
3、查看外部依赖的的坐标 https://mvnrepository.com/
2.5 依赖
依赖: 项目中使用的其他资源(jar)
需要使用maven表示依赖,管理依赖,通过使用dependency和坐标一起完成依赖的使用
需要在pom.xml文件中,使用dependencies 和dependency,还有坐标完成依赖的说明
如:
```xml
<!--依赖-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>