Maven項目管理工具
一、Maven概述[瞭解]
1.問題引入
l 目前存在的問題
運用我們目前學習的技術已經可以開發一個小型的項目了,但是在實際開發中,我們的項目規模要複雜的多,遇到的問題也更多!比如:
1、jar包的管理:多個項目依賴同一個jar包,要複製多次,jar升級時又得重新複製多次,jar之間還可能有多重依賴關係,容易管理混亂
2、項目的管理:項目規模越來越大,需要拆分成多個子模塊,模塊之間的相互依賴關係需要統一管理,並且項目生命週期中的編譯,打包,測試,運行等步驟都需要統一管理
l 如何解決?
開發一個工具對jar包和項目進行統一的管理,比如:
把jar包都編個座標,記錄並存放在一個地方(這個地方稱作爲倉庫),項目中要用哪個jar就根據座標來倉庫中找就行了;
對項目生命週期和模塊進行統一管理,能夠自動化的執行編譯,打包,測試,運行等操作。
而我們想到的這些解決方案,早就有大牛幫我們實現好了,那就是Maven!
總結:通俗的說:maven就是用來管理jar包+管理項目
注意:這些工具都是幫助/輔助我們工作的,我們最終的開發產出物都是代碼
2.初識Maven
l 官網
l 百科介紹
l 說人話
Maven是一個項目管理工具,可以對項目和jar包進行統一個管理,包括:項目的構建(執行項目的生命週期)、項目的生命週期(編譯、測試、打包、部署等)、項目的模塊依賴關係和jar包的依賴關係
l Jar包管理
l 自動化的項目構建
3.Maven的相關概念
(1)項目對象模型(POM)
Project Object Model:POM對象模型,其實就是一個xml文件,名字叫做pom.xml,每個Maven工程中都有一個pom.xml文件,定義工程(所依賴的jar包)、(本工程的座標、打包(jar/war)運行方式)。
Maven通過座標對項目工程所依賴的jar包統一規範管理
企業使用時,也叫做GAV座標
Maven的座標使用如下三個量在 Maven 的倉庫中唯一的確定一個jar。
[1] groupid:公司或組織的域名倒序+[當前項目名稱]
[2] artifactId:當前項目的模塊名稱
[3] version:當前模塊的版本
例如:要引入junit的測試jar,只需要在pom.xml配置文件中配置引入junit的座標即可
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
(2)生命週期
l 清理、編譯、測試、報告 、打包、部署、站點生成。
①清理:刪除以前的編譯結果,爲重新編譯做好準備。
②編譯:將Java 源程序編譯爲字節碼文件。
③測試:針對項目中的關鍵點進行測試,確保項目在迭代開發過程中關鍵點的正確性。
④報告:在每一次測試後以標準的格式記錄和展示測試結果。
⑤打包:將一個包含諸多文件的工程封裝爲一個壓縮文件用於安裝或部署。Java 工程對應 jar 包,Web工程對應 war 包。
⑥安裝:在 Maven 環境下特指將打包的結果——jar 包安裝到本地倉庫中或把 war包安裝到web容器中。
⑦部署:將打包的結果部署到遠程倉庫或將war包部署到服務器上運行。
(3)Maven項目標準目錄結構
Maven是約定思想的體現,約定>配置>編程,maven之前有一個ant工具(告訴它你的源代碼在哪個路徑下,然後編譯輸出到哪個路徑)
l Maven工程有自己標準的目錄結構。
而 Maven 正是因爲指定了特定目錄保存文件才能夠對我們的 Java 工程進行自動化構建(就是自動執行上面的生命週期)。
l 標準目錄結構示例
Project
|-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項目核心配置文件
(4)Maven插件
maven 管理項目生命週期過程都是基於插件完成的,例如:開發中使用的tomcat插件。
(5)Maven倉庫
倉庫名稱 | 作用 |
---|---|
本地倉庫 | 相當於緩存,工程第一次會從遠程倉庫(互聯網)去下載jar 包,將jar包存在本地倉庫(在程序員的電腦上)。第二次不需要從遠程倉庫去下載。先從本地倉庫找,如果找不到纔會去遠程倉庫找。 |
中央倉庫(遠程倉庫) | 是一種遠程倉庫,倉庫中的jar包由專業團隊(maven團隊)統一維護。裏面存放了全世界大多數流行開源軟件jar包中央倉庫的地址:http://mvnrepository.com/tags/maven |
私服(遠程倉庫) | 在公司內部架設一臺私服,其它公司架設一臺倉庫,對外公開。 |
4.使用Maven的好處
通過上邊介紹傳統項目和maven項目在項目構建及依賴管理方面的區別,maven有如下的好處:
1、自動構建(生命週期管理):maven對項目構建的過程進行標準化,通過一個命令即可完成構建過程。
2、依賴管理:maven工程不用手動導jar包,通過在pom.xml中定義座標從maven倉庫自動下載,方便且不易出錯。
3、跨平臺:maven命令可在window、linux上使用,命令無差別。
4、提升效率:遵循maven規範開發有利於提高大型團隊的開發效率,降低項目的維護成本,大公司都會考慮使用maven來構建項目。