帶你瞭解Maven,並搞定安裝和配置

•寫在前面

Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然後Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。

Maven 有一個生命週期,當你運行 mvn install 的時候被調用。這條命令告訴Maven 執行一系列的有序的步驟,直到到達你指定的生命週期。遍歷生命週期旅途中的一個影響就是,Maven 運行了許多默認的插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。

此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。

介紹Maven

相信我們都開發過一個java web項目,我們可以把傳統的開發方式以及過程總結成一下幾點

  • 在IDEA中創建一個java web工程
  • 在工程中編寫源代碼及配置文件等
  • 對源代碼進行編譯,java文件編譯成class文件
  • 執行Junit單元測試
  • 將工程打成war包部署至tomcat運行

而當我們使用Maven作爲構建工具,即把動態的Web工程經過編譯得到的編譯結果部署到服務器上的整個過程,這整個過程如下,這些過程可以實現自動化完成

  • 編譯:java源文件[.java]->編譯->Classz字節碼文件[.class]
  • 部署:最終在sevlet容器中部署的不是動態web工程,而是編譯後的文件
  • 清理clean:將以前編譯得到的舊文件class字節碼文件刪除
  • 編譯compile:將java源程序編譯成class字節碼文件
  • 測試test:自動測試,自動調用junit程序
  • 報告report:測試程序執行的結果
  • 打包package:動態Web工程打War包,java工程打jar包
  • 安裝install:Maven特定的概念-----將打包得到的文件複製到“倉庫”中的指定位置
  • 部署deploy:將動態Web工程生成的war包複製到Servlet容器下,使其可以運行

有了Maven的協助,我們可以實現一個命令完成構建、運行,方便快捷,並且maven對每個構建階段進行規範,非常有利於大型團隊協作開發。

Maven的優勢

一個項目就是一個工程: 如果項目非常龐大,就不適合使用package來劃分模塊,最好是每一個模塊對應一個工程,利於分工協作。藉助於maven就可以將一個項目拆分成多個工程

改變了原來jar引入的麻煩: 同樣的jar包重複的出現在不同的項目工程中,你需要做不停的複製粘貼的重複工作。藉助於maven,可以將jar包保存在“倉庫”中,不管在哪個項目只要使用引用即可就行。
jar下載: 藉助於maven我們可以使用統一的規範方式下載jar包,規範

jar包版本控制: 不同的項目在使用jar包的時候,有可能會導致各個項目的jar包版本不一致,導致未執行錯誤。藉助於maven,所有的jar包都放在“倉庫”中,所有的項目都使用倉庫的一份jar包。

簡化jar包依賴: 比如FileUpload組件的IO組件,commons-fileupload-1.3.jar依賴於commons-io-2.0.1.jar。極大的浪費了我們導入包的時間成本,也極大的增加了學習成本。藉助於maven,它會自動的將依賴的jar包導入進來。
這裏藉助網上的一張圖說明一下
在這裏插入圖片描述

Maven安裝

我們可以試着先執行 mvn -v 指令查看我們是否有安裝Maven,這個指令用來查看Maven的版本。
首先第一步當然是下載Maven啦,這裏我附上Maven官方的下載地址選擇如下版本
在這裏插入圖片描述
記得檢查一下當前系統是否配置JAVA_HOME的環境變量,下載好Maven之後,解壓Maven放在一個非中文無空格的路徑下,我自己是放在了D盤,下一步就是配置Maven的相關環境變量,很簡單,在環境變量增加M2_HOME,路徑是Maven解壓後的根目錄,在環境變量裏的path中增加maven/bin的目錄,我自己是直接在Path中加了Maven的bin的絕對路徑,沒有弄M2_HOME,我這樣方便點,上面那樣是正規一點,如下。
在這裏插入圖片描述
安裝之後,執行 mvn -v 查看Maven版本,我自己的是Maven3.5.4

Maven倉庫

這裏要介紹一下Maven倉庫的概念,Maven的工作需要從倉庫下載一些jar包,如下圖所示,本地的項目A、項目B等都會通過maven軟件從遠程倉庫(可以理解爲互聯網上的倉庫)下載jar包並存在本地倉庫,本地倉庫 就是本地文件夾,當第二次需要此jar包時則不再從遠程倉庫下載,因爲本地倉庫已經存在了,可以將本地倉庫理解爲緩存,有了本地倉庫就不用每次從遠程倉庫下載了

  • 本地倉庫就是用來存儲從遠程倉庫或中央倉庫下載的插件和jar包,項目使用一些插件或jar包,優先從本地倉庫查找。
  • 遠程倉庫則是,如果本地需要插件或者jar包,本地倉庫沒有,默認去遠程倉庫下載。遠程倉庫可以在互聯網內也可以在局域網內。默認本地倉庫位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用戶目錄。
  • 中央倉庫 則是在maven軟件中內置一個遠程倉庫地址http://repo1.maven.org/maven2 ,它是中央倉庫,服務於整個互聯網,它是由Maven團隊自己維護,裏面存儲了非常全的jar包,它包含了世界上大部分流行的開源項目構件。

配置Maven倉庫

我們在Maven的安裝目錄下,創建一個repository,如下
在這裏插入圖片描述
然後在Maven的安裝目錄下找到conf目錄下的settings.xml配置文件,打開此文件配置本地倉庫的路徑,配置內容如下
在這裏插入圖片描述

Maven配置阿里源

Maven因爲是中央庫在國外,所以我們在加載一些依賴的時候會很慢,這裏配置一下阿里源。我們在Maven的安裝目錄下,打開setting.xml,找到,在下面加上這一段信息

<mirror>  
  <id>nexus-aliyun</id>  
  <mirrorOf>*</mirrorOf>  
  <name>Nexus aliyun</name>  
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

在這裏插入圖片描述

Maven常用命令

Maven命令列表 說明
mvn –version 顯示版本信息
mvn clean 清理項目生產的臨時文件,一般是模塊下的target目錄
mvn compile 編譯源代碼,一般編譯模塊下的src/main/java目錄
mvn package 項目打包工具,會在模塊下的target目錄生成jar或war等文件
mvn test 測試命令,或執行src/test/java/下junit的測試用例
mvn install 將打包的jar/war文件複製到你的本地倉庫中,供其他模塊使用
mvn deploy 將打包的文件發佈到遠程參考,提供其他人員進行下載依賴
mvn site 生成項目相關信息的網站
mvn eclipse:eclipse 將項目轉化爲Eclipse項目
mvn dependency:tree 打印出項目的整個依賴樹
mvn archetype:generate 創建Maven的普通java項目
mvn tomcat:run 在tomcat容器中運行web應用 需要插件支持 只有tomcat1.7的插件,沒有1.8的,所以tomcat8.0用不了此命令
mvn jetty:run 調用 Jetty 插件的 Run 目標在 Jetty Servlet 容器中啓動 web 應用

值得一提的是,運行maven命令的時候,首先需要定位到maven項目的目錄,也就是項目的pom.xml文件所在的目錄。否則,必以通過參數來指定項目的目錄,如下。
在這裏插入圖片描述
以上就是安裝和配置的全過程,當然了,在真實的開發中,我們都是會在軟件中採用圖形界面化的方式來運行Maven命令,比如我們的IDEA 幫我們集成好了Maven項目的管理模塊,那我們就可以使用IDEA來操作Maven項目了

Maven在Idea中說明

這裏值得一提的是,Maven構建的項目必須遵守如下的項目結構,這是Maven構建項目的約定

  |-src
  |   |-main
  |   |  |-java        —— 存放項目的.java文件
  |   |  |-resources   —— 存放項目資源文件,如spring, hibernate配置文件
         |-webapp     —— webapp目錄是web工程的主目錄
            |-WEB-INF
              |-web.xml
  |      |-test
  |      |-java        ——存放所有測試.java文件,如JUnit測試類
  |      |-resources   —— 測試資源文件
  |-target             —— 目標文件輸出位置例如.class、.jar、.war文件
  |-pom.xml           ——maven項目核心配置文件

我們可以手動創建Maven項目,但必須遵守上面的目錄格式,但是我們一般是通過軟件幫我們創建的,不管是軟件創建,還是手動創建,都必須遵循Maven的目錄結構,如圖所示 IDEA 創建出來的Maven項目結構如下
在這裏插入圖片描述
pom.xml是一個maven工程都有一個pom.xml文件,通過pom.xml文件定義項目的座標、項目依賴、項目信息、插件目標等

依賴範圍的介紹

添加jar包的座標時,還可以指定這個jar包將來的作用範圍
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發佈了93 篇原創文章 · 獲贊 474 · 訪問量 93萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章