maven基本概述

为什么需要使用maven

如今我们构建一个项目需要用到很多第三方的类库 ,例如我们在开发项目中 需要引入
这些依赖jar包 image.png一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系非常复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败

maven的概述

Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率

  1. 1.清理,把之前项目编译的东西删除掉,为新的编译代码做准备。
  2. 2.编译,把程序源代码编译为执行代码,java-class文件
  3. 批量的,maven可以同时把成千上百的文件编译为class
  4. javac不一样,javac一次编译一个文件。
  5. 3.测试:maven可以执行测试程序代码,验证你的功能是都正确。
  6. 批量的,maven可以同时执行多个测试代码,同时测试很多功能。
  7. 4.报告,生成的测试结果的文件,测试通过没有。
  8. 5.打包,把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。
  9. 这个压缩文件就是项目的结果文件,通常java程序压缩文件是jar扩展名的。对于web应用, 压缩文件扩展名是.war
  10. 6.安装,把5中生成的文件jarwar安装到本地仓库
  11. 7.部署,把程序安装好可以执行

maven的项目结构

Maven规定的统一的目录结构

  1. maven项目标准目录结构:
  2. mavenjava工程:
  3. src/main/java目录 核心代码部分
  4. src/main/resources 配置文件部分
  5. src/test/java目录 测试代码部分
  6. src/test/resources 测试配置文件
  7. mavenweb工程:
  8. src/main/webapp 页面资源,jscss,图片等等

maven下载jar包原理

本地仓库 当前计算机电脑自己 安装maven环境 缓存jar包
私服仓库
远程仓库
仓库——-缓存我们的jar包
使用maven统一管理维护我们项目中所有的jar包
原理
1.当前我们的项目会引入jar包,先去maven本地仓库
中查找该jar包,如果maven本地仓库中有该jar包则直接
使用maven本地仓库中的jar包。
2.如果maven本地仓库中没有该jar包,则会maven中央仓库
中下载该jar包 在缓存到我们maven本地仓库中。
3.如果去maven中央仓库下载jar包 速度可能会非常慢
maven本地仓库→maven私服→maven中央仓库
本地仓库适合于: 在同一台计算机电脑上 多个不同的项目 共享同一个本地仓库
maven私服适合于 多个不同的开发 共享使用同一个maven私服仓库
image.png
image.png

maven环境的安装

  1. 第一步:下载Maven的安装包([https://maven.apache.org/download.cgi](https://maven.apache.org/download.cgi))<br /> 第二步: 解压apache-maven-3.6.3-bin.zip这个文件<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25438525/1655965637167-8354a7f4-9fb8-47f8-9bb7-8b8f83753486.png#clientId=u661f4628-3dc1-4&from=paste&height=108&id=ua7452eef&originHeight=271&originWidth=710&originalType=binary&ratio=1&rotation=0&showTitle=false&size=25600&status=done&style=none&taskId=udf5f6ec0-b650-458f-8c20-e463d215be9&title=&width=284)<br /> 第三步:进入我的电脑-->右击属性-->高级设置-->点击环境变量<br /> 添加MAVEN_HOME的变量名 为 maven安装路径<br /> MAVEN_HOME=D:\path\maven\apache-maven-3.2.5<br /> 第四步:进入Path,添加%MAVEN_HOME%\bin<br /> 第五步:检查自己的maven是否配置成功<br /> 按下win+r 并输入cmd 进入命令行模式。<br /> 在命令行模式输入 mvn -version; <br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25438525/1655971407317-74f097f7-eaeb-4889-a310-3a37095e20c5.png#clientId=ua4fccd5a-9ced-4&from=paste&height=266&id=ue7b97e5b&originHeight=532&originWidth=1444&originalType=binary&ratio=1&rotation=0&showTitle=false&size=100867&status=done&style=none&taskId=u88c36136-18af-47c8-b7a2-6459c993871&title=&width=722)

maven常用命令

  1. 命令 描述
  2. mvn clean 对项目进行清理,删除target目录下编译的内容
  3. mvn compile 编译项目源代码
  4. mvn test 对项目进行运行测试
  5. mvn package 打包文件并存放到项目的target目录下,打包好的文件通常都是编译后的class文件
  6. mvn install 在本地仓库生成仓库的安装包,可供其他项目引用,同时打包后的文件放到项目的target目录下
  1. maven项目标准目录结构:
  2. mavenjava工程:
  3. src/main/java目录 核心代码部分
  4. src/main/resources 配置文件部分
  5. src/test/java目录 测试代码部分
  6. src/test/resources 测试配置文件
  7. mavenweb工程:
  8. src/main/webapp 页面资源,jscss,图片等等

mayikt-web
src
main—— 主项目
java———-java代码
resources
test
java———-测试java代码
resources
pom.xml ——-核心 例如 当前项目依赖的jar包

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.mayikt</groupId>
  7. <artifactId>mayikt-web</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <dependencies>
  10. <!--servlet 自动去远程仓库下载jar ,在缓存到本地仓库中-->
  11. <dependency>
  12. <groupId>jakarta.servlet</groupId>
  13. <artifactId>jakarta.servlet-api</artifactId>
  14. <version>5.0.0</version>
  15. </dependency>
  16. </dependencies>
  17. </project>

com.mayikt.servlet

  1. package com.mayikt.servlet;
  2. import jakarta.servlet.http.HttpServlet;
  3. /**
  4. * @author 余胜军
  5. * @ClassName MayiktServlet
  6. * @qq 644064779
  7. * @addres www.mayikt.com
  8. * 微信:yushengjun644
  9. */
  10. public class MayiktServlet extends HttpServlet {
  11. }

idea整合maven项目

idea 默认已经帮助整合了一个maven
settings.xml 指定maven本地仓库目录
D:\maven\mvnRespo

  1. <dependencies>
  2. <!--servlet 自动去远程仓库下载jar ,在缓存到本地仓库中-->
  3. <dependency>
  4. <groupId>jakarta.servlet</groupId>
  5. <artifactId>jakarta.servlet-api</artifactId>
  6. <version>5.0.0</version>
  7. </dependency>
  8. </dependencies>

配置maven私服仓库

1.maven安装目录:D:\path\maven\apache-maven-3.2.5
2.配置settings.xml

  1. <mirrors>
  2. <!-- mirror
  3. | Specifies a repository mirror site to use instead of a given repository. The repository that
  4. | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
  5. | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
  6. |
  7. <mirror>
  8. <id>mirrorId</id>
  9. <mirrorOf>repositoryId</mirrorOf>
  10. <name>Human Readable Name for this Mirror.</name>
  11. <url>http://my.repository.com/repo/path</url>
  12. </mirror>
  13. -->
  14. <mirror>
  15. <id>nexus-aliyun</id>
  16. <mirrorOf>central</mirrorOf>
  17. <name>Nexus aliyun</name>
  18. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  19. </mirror>
  20. </mirrors>

如何查看maven是在下载jar包呢?

maven配置详解

1.在Maven中坐标就是为了定位一个唯一确定的jar包,
2.使用Maven中坐标定义项目jar的依赖
maven坐标的构成
groupId:定义当前Maven组织名称 例如 com.mayikt com.yushengjun com.()
artifactId:定义实际项目名称 maytikt-web
version:定义当前项目的当前版本 1.0

  1. <groupId>com.mayikt</groupId>
  2. <artifactId>mayikt-maven-web</artifactId>
  3. <version>1.0-SNAPSHOT</version>
  1. <!--mysql驱动-->
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. <version>5.1.37</version>
  6. </dependency>


maven依赖范围

compile:默认的scope,运行期有效,需要打入包中
provided:编译期有效,运行期不需要提供,不会打入包中
runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
test:测试需要,不会打入包中
system:非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)