Maven系列(一):maven基礎入門

什麼是 Maven?

Maven 是一個項目管理工具,它包含了一個項目對象模型 (POM:Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。

  •  項目對象模型 (Project Object Model)

一個 maven 工程都有一個 pom.xml 文件,通過 pom.xml 文件定義項目的座標、項目依賴、項目信息、插件目標等。

  • 依賴管理系統(Dependency Management System)

通過 maven 的依賴管理對項目所依賴的 jar 包進行統一管理,在 pom.xml 中定義座標,內容包括:groupId、artifactId、version,詳細內容如下:

<!--項目名稱,定義爲組織名+項目名,類似包名-->

<groupId>cn.itcast.maven</groupId>

<!-- 模塊名稱 -->

<artifactId>maven-first</artifactId>

<!-- 當前項目版本號,snapshot 爲快照版本即非正式版本,release 爲正式發佈版本 --

<version>0.0.1-SNAPSHOT</version>

<packaging > :打包類型

jar:執行 package 會打成 jar war:執行 package 會打成 war 包pom :用於 maven 工程的繼承,通常父工程設置爲 pom

  • 一個項目生命週期(Project Lifecycle)

  •  一組標準集合

maven 將整個項目管理過程定義一組標準,比如:通過 maven 構建工程有標準的目錄結構,有標準的生命週期階段、依賴管理有標準的座標定義等。

  • 插件(plugin)目標(goal)

maven 管理項目生命週期過程都是基於插件完成的

 maven的兩個核心功能

依賴管理

maven 工程中不直接將 jar 包導入到工程中,而是通過在 pom.xml 文件中添加所需 jar包的座標,這樣就很好的避免了 jar 直接引入進來,在需要用到 jar 包的時候,只要查找 pom.xml 文件,再通過 pom.xml 文件中的座標,到一個專門用於”存放 jar 包的倉庫”(maven 倉庫)中根據座標從而找到這些 jar 包,再把這些 jar 包拿去運行。

 

 一鍵構建項目

Maven 倉庫分類

本地倉庫 :用來存儲從遠程倉庫或中央倉庫下載的插件和 jar 包,項目使用一些插件或 jar 包,
優先從本地倉庫查找,默認本地倉庫位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用戶目錄

遠程倉庫:如果本地需要插件或者 jar 包,本地倉庫沒有,默認去遠程倉庫下載。遠程倉庫可以在互聯網內也可以在局域網內。
中央倉庫 :在 maven 軟件中內置一個遠程倉庫地址 http://repo1.maven.org/maven2 ,它是中央倉庫,服務於整個互聯網,它是由 Maven 團隊自己維護,裏面存儲了非常全的 jar 包,它包含了世界上大部分流行的開源項目構件

 

 全局 setting 與用戶 setting

maven 倉庫地址、私服等配置信息需在 setting.xml 文件中配置,分爲全局配置和用戶配置。maven 安裝目錄的 conf/setting.xml 文件用於 maven 的所有 project項目,它作爲 maven 的全局配置。如需個性配置則需要在用戶配置中設置,用戶配置setting.xml 文件默認在:${user.dir} /.m2/settings.xml 目錄中,${user.dir} 指 windows 中的用戶目錄。maven 會先找用戶配置,如果找到則以用戶配置文件爲準,否則使用全局配置文件。

Maven 工程結構

Maven 常用命令 

compile :是 maven 工程的編譯命令,作用是將 src/main/java 下的文件編譯爲 class 輸出到 target目錄下。

test: 是 maven 工程的測試命令 mvn test,會執行 src/test/java 下的單元測試類

clean :是 maven 工程的清理命令,執行 clean 會刪除 target 目錄及內容。

package :是 maven 工程打包命令,對於 java 工程執行 package 打成 jar 包,對於 web 工程打成 war包

install: 是 maven 工程的安裝命令,執行 install 將 maven 打成 jar 包或 war 包發佈到本地倉庫。

 

maven指令生命週期

 maven 對項目構建過程分爲三套相互獨立的生命週期:

   Clean Lifecycle 在進行真正的構建之前進行一些清理工作。

   Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。

   Site Lifecycle 生成項目報告,站點,發佈站

Maven依賴範圍

A 依賴 B,需要在 A 的 pom.xml 文件中添加 B 的座標,添加座標時需要指定依賴範圍,依賴範圍包
括:

compile:編譯範圍,指 A 在編譯時依賴 B,此範圍爲默認依賴範圍。編譯範圍的依賴會用在編譯、測試、運行,由於運行時需要所以編譯範圍的依賴會被打包。
provided:provided 依賴只有在當 JDK 或者一個容器已提供該依賴之後才使用, provided 依賴在編譯和測試時需要,在運行時不需要,比如:servlet api 被 tomcat 容器提供,運行時該依賴無效,防止和 tomcat 下 jar 衝突。
runtime:runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如:jdbc的驅動包。由於運行時需要故runtime 範圍的依賴會被打包。
test:test 範圍依賴 在編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用,比如:junit。由於運行時不需要故test範圍依賴不會被打包。
system:system 範圍依賴與 provided 類似,但是你必須顯式的提供一個對於本地系統中 JAR文件的路徑,需要指定systemPath 磁盤路徑,system依賴不推薦使用

pom 基本配置 

pom.xml 是 Maven 項目的核心配置文件,位於每個工程的根目錄,基本配置如下:

<project > :文件的根節點

<modelversion > : pom.xml 使用的對象模型版本

<groupId > :項目名稱,一般寫項目的域名

<artifactId > :模塊名稱,子項目名或模塊名稱

<version > :產品的版本號 . 
           <packaging > :打包類型,一般有 jar、war、pom 等

<name > :項目的顯示名,常用於 Maven 生成的文檔。 
           <description > :項目描述,常用於 Maven 生成的文檔

<dependencies> :項目依賴構件配置,配置項目依賴構件的座標

<build> :項目構建配置,配置編譯、運行插件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章