一.底层原理
1)基本概念
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。(使用Java语言开发)
角色划分:
本地仓库: 在本机中保存jar包的文件目录
远程仓库:maven官网几乎维护了所有的开源jar包信息.其中解决了版本冲突的问题.
私服镜像:为了让本地用户快速的获取jar包.使用镜像服务器提前下载jar包.速度更快.
maven的工作原理:
1.镜像服务器搭建时,需要定期拉去远程服务器中的jar包.
2.获取到的包.保存到镜像服务器本地.方便用户以后获取.
3.用户使用jar包时,先检查本地仓库中是否有包,如果没有 则连接私服镜像获取jar包. 如果有,则直接使用.
4.将jar包保存到本地之后,供用户使用.
2)maven坐标
maven的坐标:
组id 一般采用公司域名倒写的方式
项目名 项目名称必须唯一
版本号 指定项目的版本的
作用: 查找本地仓库中的对应jar包
maven的坐标意义:
1.maven中央仓库采用坐标的形式管理所有的jar包.
2.可以根据坐标的位置,唯一定位jar包.
3.可以根据坐标.依赖其它项目
maven jar包搜索地址:https://mvnrepository.com/
3)jar包依赖传递性原理
maven工具通过dependency标签和坐标查找指定的jar包文件.
根据坐标查找包
maven加载完成jar包之后,扫描当前文件的 xxxx.pom文件.之后根据该坐标继续添加jar包依赖项. 直到将所有的依赖信息加载完成为止
4) Pom.xml配置信息的说明
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<!--定义maven的坐标
组id 一般采用公司域名倒写的方式 www.tedu.cn
项目名 项目名称必须唯一
版本号 指定项目的版本的.
问题: maven的坐标有什么意义?
答:
1.maven中央仓库采用坐标的形式管理所有的jar包.
2.可以根据坐标的位置,唯一定位jar包.
3.可以根据坐标.依赖其它项目!!!.
-->
<groupId>com.taobao</groupId>
<artifactId>spring_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring_demo1</name>
<description>spring_demo1</description>
<!--表示当前maven的配置信息-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--以后springboot的平台的版本就是2.3.7-->
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!--依赖的jar包-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--mybatis依赖包-->
<!--<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>-->
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!--jdbc依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--添加lombok的包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!--依赖的管理器,在内部指定的jar包的版本,所以不需要手动指定
一般多见于 springboot/springCloud的项目.
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--build的标签 项目编译/打包时有用-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<!--注意事项:必须与当前项目的主启动类一致 -->
<mainClass>com.taobao.JtApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
还可以将settings.xml文件复制到该目录下:
5) 常见命令
clean: 清空项目中的target目录(class文件)
compile 使用maven工具进行编译 将xxx.java生成xxx.class
test 测试
site 站点文档
package 打包jar、war
deploy 部署到私服
install 将java项目打包为xxx.jar,存在本地仓库中
run 运行
二.Maven的使用
1)下载地址
https://maven.apache.org/download.cgi |
2)配置镜像/本地仓库
解压即可使用,打开解压文件夹中的conf中的settings.xml,在设置中配置镜像(配置一个即可)/本地仓库,如下:
<!--配置本地仓库-->
<localRepository>/path/to/local/repo</localRepository>
<!--配置远程仓库(配置其一即可)-->
<!--阿里云的私服镜像服务器-->
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!--阿里云的私服镜像服务器-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!--华为的私服镜像服务器-->
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
<mirrors>
3)idea整合Maven
最好准备一个jar包文件放入本地库中,如果网络不好,很容易jar包下载失败,一路飘红!!!!
idea整合Maven只需一次,每次创建Maven项目时不需要再整合Maven,步骤如下:
4)创建SpringBoot工程
创建每个Maven工程都需要idea中配置Maven
一般不会单独创建Maven工程,而是创建SpringBoot工程
URL地址: https://start.aliyun.com
三.Maven常见报错
1)版本兼容性问题
IDEA的版本,不要太低.至少2020以上, 兼容 maven 3.8.x
2)网络问题下载jar包失败
现象如下:
方案①先将maven本地仓库清空,再重新加载reload
方案②如果jar包下载完整,还是飘红可以选择重启idea看看
3)jar包下载不完整,处理方案
常见异常的说明: 有时maven jar包下载不正常.但是maven的工具以为是正确的.导致jar包的导入报错!!! 如果遇到这样的报错信息.,则将jar包删除即可.
然后刷新maven
可以根据坐标查找到对应的jar包,将下载不完整的jar包删除,再次重新下载即可
4)有时IDEA 不能正确的识别maven项目
需要自己手动的添加该项目
最终效果:
5) Maven解压路径问题
①Maven解压路径不能和其他路径耦合
②Maven路径不能出现特殊符号,不然会出现各种各样的异常(Maven是Java语言开发的)