首先需要了解一下POM文件,它相当于是整个Maven项目的配置文件,由XML编写
- "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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0modelVersion>
-
- <groupId>org.examplegroupId>
- <artifactId>first_MavenartifactId>
- <version>1.0-SNAPSHOTversion>
-
- project>
以`project`为根节点,而`modelVersion`定义了当前模型的版本,一般是4.0.0
`groupId`、`artifactId`、`version`这三个元素合在一起,用于唯一区别每个项目,别人如果需要将我们编写的代码作为依赖,那么就必须通过这三个元素来定位我们的项目,我们称为一个项目的基本坐标,所有的项目一般都有自己的Maven坐标,因此我们通过Maven导入其他的依赖只需要填写这三个基本元素就可以了,无需再下载Jar文件,而是Maven自动帮助我们下载依赖并导入。
* `groupId` 一般用于指定组名称,命名规则一般和包名一致,比如我们这里使用的是`org.example`,一个组下面可以有很多个项目。
* `artifactId` 一般用于指定项目在当前组中的唯一名称,也就是说在组中用于区分于其他项目的标记。
* `version` 代表项目版本,随着我们项目的开发和改进,版本号也会不断更新
创建一个`dependencies`节点
- <dependencies>
- //里面填写的就是所有的依赖
- dependencies>
- <dependencies>
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- <version>1.18.22version>
- <scope>providedscope>
- dependency>
- <dependency>
- <groupId>org.junit.jupitergroupId>
- <artifactId>junit-jupiterartifactId>
- <version>5.8.1version>
- <scope>testscope>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.27version>
- dependency>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.7version>
- dependency>
- dependencies>
一个项目依赖一般是存储在中央仓库中,也有可能存储在一些其他的远程仓库(私服),几乎所有的依赖都被放到了中央仓库中,因此,Maven可以直接从中央仓库中下载大部分的依赖(Maven第一次导入依赖是需要联网的),远程仓库中下载之后 ,会暂时存储在本地仓库,我们会发现我们本地存在一个`.m2`文件夹,这就是Maven本地仓库文件夹,默认建立在C盘,在下次导入依赖时,如果Maven发现本地仓库中就已经存在某个依赖,那么就不会再去远程仓库下载了。
导入依赖时会卡顿,建议换个仓库地址
打开IDEA的安装目录,找到`安装根目录/plugins/maven/lib/maven3/conf`文件夹,找到`settings.xml`文件,打开编辑,找到mirros标签,添加以下内容
- <mirror>
- <id>nexus-aliyunid>
- <mirrorOf>*mirrorOf>
- <name>Nexus aliyunname>
- <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
- mirror>
如果我需要的依赖没有上传的远程仓库,而是只有一个Jar
**system**:作用域和provided是一样的,但是它不是从远程仓库获取,而是直接导入本地Jar包
- <dependency>
- <groupId>javax.jntmgroupId>
- <artifactId>lbwnbartifactId>
- <version>2.0version>
- <scope>systemscope>
- <systemPath>C://test.jarsystemPath>
- dependency>