Maven基礎
一、什麼是Maven
Maven 的正確發音是[ˈmevən],而不是“馬瘟”以及其他什麼瘟。Maven 在美國是一個口語化的詞語,代表專家、內行的意思。一個對 Maven 比較正式的定義是這麼說的:Maven 是一個專案管理工具,它包含了一個專案物件模型 (POM:Project Object Model),一組標準集合,一個專案生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來執行定義在生命週期階段(phase)中外掛(plugin)目標(goal)的邏輯。
二、Maven的作用
能幫你構建工程,管理 jar包,編譯程式碼,還能幫你自動執行單元測試,打包,生成報表,甚至能幫你部署專案,生成 Web 站點。
三、Maven的使用
3.1、Maven的下載
我們首先要到官網去下載它的安裝軟體。通過百度搜尋“Maven“如下:
點選 Download 連結,就可以直接進入到 Maven 軟體的下載頁面:
可以選擇下載最新版。
3.2、Maven的安裝
Maven 下載後,將 Maven 解壓到一個沒有中文沒有空格的路徑下,比如 D盤下面。
解壓後目錄結構如下:
- bin:存放了 maven 的命令,比如我們前面用到的 mvn tomcat:run
- boot:存放了一些 maven 本身的載入程式,如類載入器等
- conf:存放了 maven 的一些配置檔案,如 setting.xml 檔案
- lib:存放了 maven 本身執行所需的一些 jar 包
至此我們的 maven 軟體就可以使用了,前提是你的電腦上之前已經安裝並配置好了 JDK。
3.3、Maven的環境變數配置
配置 MAVEN_HOME ,變數值就是你的 maven 安裝 的路徑(bin 目錄之前一級目錄)
配置完成後在path中新增如圖:
通過 mvn -v命令檢查 maven 是否安裝成功,找開 cmd 命令,輸入 mvn –v命令,如下圖
我們發現 maven 的版本,及 jdk 的版本符合要求,這樣我們的 maven 軟體安裝就成功了。
四、Maven倉庫
4.1、Maven倉庫的分類
Maven的工作需要從倉庫下載一些 jar,本地倉庫都會通過 maven軟體從遠端倉庫(可以理解為網際網路上的倉庫)下載 jar 包並存在本地倉庫,本地倉庫 就是本地資料夾,當第二次需要此 jar 包時則不再從遠端倉庫下載,因為本地倉庫已經存在了,可以將本地倉庫理解為快取,有了本地倉庫就不用每次從遠端倉庫下載了。
-
本地倉庫 :用來儲存從遠端倉庫或中央倉庫下載的外掛和 jar 包,專案使用一些外掛或 jar 包,優先從本地倉庫查詢預設本地倉庫位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 使用者目錄。
-
遠端倉庫:如果本地需要外掛或者 jar 包,本地倉庫沒有,預設去遠端倉庫下載。遠端倉庫可以在網際網路內也可以在區域網內。
-
中央倉庫 :Maven 中央倉庫是由 Maven 社群提供的倉庫,其中包含了大量常用的庫。
中央倉庫包含了絕大多數流行的開源Java構件,以及原始碼、作者資訊、SCM、資訊、許可證資訊等。一般來說,簡單的Java專案依賴的構件都可以在這裡下載到。
中央倉庫的關鍵概念:
- 這個倉庫由 Maven 社群管理。
- 不需要配置。
- 需要通過網路才能訪問。
要瀏覽中央倉庫的內容,maven 社群提供了一個 URL:http://search.maven.org/#browse。使用這個倉庫,開發人員可以搜尋所有可以獲取的程式碼庫。
4.2、Maven本地倉庫的配置
先在E盤建立名為jar資料夾,在此資料夾中建立名為maven_repository資料夾,把它作為本地倉庫。
maven的安裝目錄下找到conf資料夾,裡面的settings.xml檔案中配置本地倉庫的位置
開啟settings.xml檔案配置如下:
4.3、Maven倉庫的訪問順序
先在maven的查詢順序為:
首先在本地資源庫中查詢依賴,若不存在,則進入下一步,否則,退出;
然後在 遠端倉庫(私服) 中查詢依賴,若不存在,則進入下一步,否則,退出;
最後在 中央倉庫 中查詢依賴,若不存在,則提示錯誤資訊,退出。
三個倉庫:
本地倉庫:本地的一個資料夾,用來存放所有的jar包,由自己維護;
遠端倉庫(或私服):由公司或單位建立的一個倉庫,由公司維護;
中央倉庫:網際網路上的倉庫,由Maven團隊維護
五、pom元素基本配置
5.1座標定義
在 pom.xml 中定義座標,內容包括:groupId、artifactId、version,詳細內容如下
<!--專案名稱,定義為組織名+專案名,類似包名-->
<groupId>org.example</groupId>
<!-- 模組名稱 -->
<artifactId>maven-first</artifactId>
<!-- 當前專案版本號,snapshot 為快照版本即非正式版本,release 為正式釋出版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包型別
jar:執行 package 會打成 jar 包
war:執行 package 會打成 war 包
om :用於 maven 工程的繼承,通常父工程設定為 pom
5.2 pom元素
<project> :檔案的根節點 .
<modelversion>:pom.xml 使用的物件模型版本
<groupId > :專案名稱,一般寫專案的域名
<artifactId > :模組名稱,子專案名或模組名稱
<version > :產品的版本號 .
<packaging > :打包型別,一般有 jar、war、pom 等
<name > :專案的顯示名,常用於 Maven 生成的文件。
<description > :專案描述,常用於 Maven 生成的文件
<dependencies> :專案依賴構件配置,配置專案依賴構件的座標
<build> :專案構建配置,配置編譯、執行外掛等。
<properties>:自定義的Maven屬性
<repositories>:專案的倉庫配置
<inceptionYear>:專案的創始年份
<url>:專案的URL地址
<developers>:專案的開發者資訊
<contributors>:專案的貢獻者資訊
<distributionManagement>:專案的部署配置
<issueManagement>:專案的缺陷跟蹤系統資訊
<ciManagement>:專案的持續整合系統資訊
<malilingLists>:專案的郵件列表資訊