一、Maven簡介
Maven:
官方解釋: Maven, a Yiddish word meaning accumulator of knowledge, began as an attempt to simplify the build processes in the Jakarta Turbine project. There were several projects, each with their own Ant build files, that were all slightly different. JARs were checked into CVS. We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information, and a way to share JARs across several projects.
The result is a tool that can now be used for building and managing any Java-based project. We hope that we have created something that will make the day-to-day work of Java developers easier and generally help with the comprehension of any Java-based project.
翻譯: Maven 是一個意第緒語單詞,意思是知識的積累器,最初是為了簡化 Jakarta Turbine 項目的構建過程。有幾個項目,每個項目都有自己的 Ant 構建文件,但都略有不同。 JAR 已簽入 CVS。我們想要一種構建項目的標準方法、項目組成的清晰定義、發佈項目信息的簡單方法以及跨多個項目共享 JAR 的方法。 結果是一個現在可用於構建和管理任何基於 Java 的項目的工具。我們希望我們所創建的東西能夠使 Java 開發人員的日常工作變得更加輕鬆,並且通常有助於理解任何基於 Java 的項目。
通俗講解: Maven是⼀個項⽬管理⼯具, 通過pom.xml⽂件的配置獲取jar包,⽽不⽤⼿動去添加jar包。
二、創建一個Maven項目
IDEA本⾝已經集成了Maven, 我們可以直接使⽤, ⽆需安裝。
2.1 社區版創建
步驟:
- New Project
- New Project->修改項目->名字Maven->create
- 點擊New Project創建新文件
- 在創建文件界面選擇New Project,修改項目名字,再點擊Build system行的Maven選項,最後點擊create創建即可。
- 當創建的文件裏面有pom.xml,那麼就創建成功了。
2.2 專業版創建
步驟:
- New Project
- Maven->修改項目名字->Finish
- 點擊New Project創建新文件
- 在創建文件界面選擇Maven,點擊Next即可
- 修改項目名字,最後點擊Finish創建即可。
- 當創建的文件裏面有pom.xml,那麼就創建成功了。
三、Maven核心功能
Maven核心功能主要體現在兩個⽅⾯:
- 項⽬構建
- 管理依賴
3.1 項⽬構建
Maven 提供了標準的,跨平台(Linux, Windows, MacOS等)的⾃動化項⽬構建⽅式, 當我們開發了⼀個項⽬之後, 代碼需要經過編譯, 測試, 打包, 發佈等流程, 每次代碼的修改, 都需要經過這些流程, 如果代碼反覆調試修改, 這個流程就需要反覆進⾏, 就顯得特別⿇煩, ⽽Maven 給我們提供了 ⼀套簡單的命令來完成項⽬的構建.
- 在界面右邊界的Maven點擊
- 裏面就會有Maven提供的一系列命令
3.2 依賴管理
依賴配置 依賴: 指當前項⽬運⾏所需要的jar包. 如果使⽤Maven, 我們只需要在pom.xml中引⼊mysql-connector-java的依賴就可以了
<dependencies>
<!--⾥⾯放置項⽬的依賴座標, 可為多個 -->
</dependencies>
- 在pom⽂件 標籤內, 添加依賴座標
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
引入之前會爆紅:
- 點擊刷新按鈕, 引⼊新加⼊的依賴jar包 後續有添加新的jar包, 或者修改jar包版本, 都需要通過該⽅式在項⽬中添加依賴. 刷新後就不會爆紅了:
3.2.1 依賴傳遞
早期我們沒有使⽤maven時, 向項⽬中添加依賴的jar包,需要把所有的jar包都複製到項⽬⼯程下. ⽐如 A 依賴B, B依賴C, 那麼 A項⽬引⼊B 的同時, 也需要引⼊C, 如果我們⼿動管理這個依賴, 這個過程就會⽐較⿇煩, 我們需要知道每個庫都依賴哪些庫, 以及這些依賴之間的版本是如何關聯的。
但使⽤maven的話, 就可以避免管理所需依賴的關係。我們只需要在pom⽂件中, 定義直接依賴就可以了, 由於maven的依賴具有傳遞性,所以會⾃動把所依賴的其他jar包也⼀起導⼊
3.2.2 依賴排除
當前階段我們需要依賴的庫並不多, 但隨着項⽬的越來越複雜, 庫之間的依賴關係也會變得越來越複雜. 如上圖中, 如果項⽬A不需要Jar B,也可以通過排除依賴的⽅式來實現.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.0.6</version>
<!--排除依賴-->
<exclusions>
<exclusion>
<artifactId>spring-jcl</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
四、Maven Help插件
當項⽬⽐較複雜時, 我們就會有Jar包衝突的問題, 這時候就需要去解決依賴衝突. 解決衝突之前,需要先找到衝突, 我們可以使⽤Maven Help插件來觀察包和包之間的依賴關係.
安裝插件:
File-> Settings ->Plugins -> 搜索'Maven Help' -> 找到對應插件, 點擊Install 安裝即可, 安裝 後需要重啓下idea, 才能⽣效
- 先在界面左上角點擊File,再點擊 Settings
- 再點擊Plugins ,然後搜索'Maven Help' , 找到對應插件, 點擊Install 安裝即可
- 再點擊右邊界的Maven,可以看到Jar包之間的依賴關係。
五、Maven 倉庫
我們通過短短⼏⾏代碼, 就把依賴jar包放在了項⽬⾥, 具體是如何做的呢?
這個代碼, 我們稱之為 "座標", 也就是唯⼀的. 在Maven中, 根據 groupId、artifactId、version 的配置, 來唯⼀識別⼀個 jar 包, 缺⼀不可. 當我們在pom⽂件中配置完依賴之後, 點擊刷新, Maven會根據座標的配置, 去倉庫⾥尋找Jar包,並把他下載下來, 添加到項⽬中. 這個Jar包下載的地⽅就稱為倉庫.
Maven倉庫的本質就是⼀個⽬錄(⽂件夾),這個⽬錄被⽤來存儲開發中所有依賴(jar包, 插件等). Maven倉庫分為兩⼤類: 本地倉庫和遠程倉庫. 其中遠程倉庫⼜分為中央倉庫, 私服 和其他公共庫
5.1 本地倉庫
本地倉庫: ⾃⼰計算機上的⼀個⽬錄(⽤來存儲jar包) 當項⽬中引⼊對應依賴jar包後,⾸先會查找本地倉庫中是否有對應的jar包
- 如果有,則在項⽬直接引⽤
- 如果沒有,則去中央倉庫中下載對應的jar包到本地倉庫
本地倉庫地址可以通過Maven配置查看:
- 先在界面左上角點擊File,再點擊 Settings
- 然後搜索Maven,再點擊Maven。
5.2 中央倉庫
中央倉庫: maven 軟件中內置⼀個遠程倉庫地址,就是中央倉庫,服務於整個互聯⽹. 由 Maven 團隊維護,全球唯⼀. 倉庫地址:地址 可以通過 網站 這個⽹站來查詢並下載 我們可以把⾃⼰寫好的Jar包上傳到中央倉庫(具備⼀定的要求), 也可以從中央倉庫下載Jar包 查找Jar的座標
5.3 私有服務器(私服)
私服: ⼀般由公司團隊搭建的私有倉庫. 私服屬於某個公司,或者某個部⻔, 往往需要⼀定權限. 有了私服之後, Maven依賴下載的順序⼜發⽣了變化.
下載順序:
- 先從本地倉庫獲取, 本地倉庫存在, 則直接返回
- 如果本地倉庫沒有, 就從私服請求, 私服存在該資源, 就直接返回
- 如果私服上不存在該資源,則從中央倉庫下載, 中央倉庫不存在, 就報錯了...
- 如果中央倉庫中存在, 就先緩存在私服上之後,再緩存到本地倉庫⾥, 再為Maven的下載請求提供服務
六、Maven 設置國內源
因為中央倉庫在國外, 所以下載起來會⽐較慢, 所以咱們選擇藉助國內⼀些公開的遠程倉庫來下載資源。
6.1 配置當前項⽬setting
-
- 先在界面左上角點擊File,再點擊 Settings
-
-
- 然後搜索Maven,再點擊Maven。
-
- 查看配置⽂件的地址, 如上圖所⽰, Maven配置⽂件地址為:C:\Users\ys-lenovo\.m2\settings.xml
- 配置國內源 Maven倉庫默認在國外https://mvnrepository.com/,國內使⽤時會⽐較慢,我們可以更換為阿⾥雲的倉庫
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿⾥雲公共倉庫</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
- 設置新項⽬的setting 上述配置的內容, 只對當前項⽬⽣效, 為了讓後續新建的項⽬也⽣效, 需要重新設置⼀下新項⽬的Settings 點擊界面左上角點擊File,再點擊 New Projects Setup 再點擊Settings for New Projects... 看當前倉庫是否一致即可。