前言
Maven 是 Apache 下的一個純 Java 開發的開源項目。基于項目對象模型(縮寫:POM)概念,Maven利用一個中央資訊片斷能管理一個項目的建構、報告和文檔等步驟。
Maven 是一個項目管理工具,可以對 Java 項目進行建構、依賴管理。
下載下傳與安裝
maven官網:http://maven.apache.org/download.html
maven的安裝非常簡單:
- 将下載下傳的安裝包解壓到自己標明的目錄下
- 配置環境變量:
- 此電腦-右鍵-屬性-進階系統設定-環境變量,打開環境變量配置頁面
- 在【系統變量】中建立,變量名:MAVEN_HOME,變量值:D:\application\work\apache-maven-3.6.3(即maven解壓目錄)
- 在【Path】中建立,寫入:%MAVEN_HOME%\bin
- 打開cmd,輸入:mvn -v,出現下圖說明安裝配置成功

以上,Maven 安裝成功!
修改配置
maven安裝後,目錄結果如下:
這裡重點有兩個目錄需要說明一下:
- conf:配置檔案目錄
- respository:倉庫目錄,這是自建目錄,用來作為本地倉庫存放jar包,而maven預設倉庫位址是 C:\Users\使用者名.m2
上面提到了maven中的respository目錄,這是我們自建的倉庫位址,接下來我們看一下怎麼讓maven下載下傳的jar包存入這個目錄。我們打開conf目錄下的【settings.xml】檔案,添加一行配置,如下圖:
另外,為了提高jar包下載下傳速度,我們使用阿裡雲的鏡像:
<mirrors>
<!-- 阿裡雲倉庫 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
複制
使用maven
建立maven項目後,項目中将有一個【pom.xml】檔案,這個檔案是我們管理項目依賴的關鍵。下面是一個最基礎的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<fastjson.version>1.2.47</fastjson.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
複制
可以看到檔案中有很多屬性,下面簡要概述一下這些屬性都起到什麼作用:
- modelVersion:指定了目前Maven模型的版本号,對于Maven2和Maven3來說,它隻能是4.0.0
- groupId:顧名思義,是公司名或是組織名。一般,groupId是由三個部分組成,每個部分之間以".“分隔,第一部分是項目用途,比如用于商業的就是"com”,用于非營利性組織的就是"org";第二部分是公司名,比如"baidu"、“alibaba”;第三部分是你的項目名
- artifactId:Maven建構的項目名,比如你的項目中有子項目,就可以使用"項目名-子項目名"的命名方式
- version:版本号,SNAPSHOT意為快照,說明該項目還在開發中,是不穩定的版本。
- properties:定義的一些屬性,比如jar包的版本,在後面可以直接引用這些屬性,便于集中管理
- dependency:依賴的資訊,例如上文中在【dependency】中描述了fastjson的資訊,【dependency】包裹在【dependencies】标簽中
在Maven中很重要的一點是,groupId、artifactId、version三個元素生成了一個Maven項目的基本坐标,例如:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
複制
接下來,我們了解一下maven管理項目依賴的基本原理:
一個項目會有很多jar的依賴,Maven工程首先會從本地倉庫中擷取jar包,當無法擷取指定jar包時,本地倉庫會從遠端倉庫(中央倉庫)中下載下傳jar包,并放入本地倉庫以備将來使用。三者的關系如下:
補充一點,在IDEA中,每次建立項目後,會使用預設的本地倉庫位址,要做一下設定:file–settings–Maven。