Maven初識

2020-08-08 18:37:23

Maven

1.maven是什麼。 Maven是一個專案管理工具,可以通過一小段描述資訊來管理專案的構建,報告和文件的專案管理工具軟體 。它包含了一個專案物件模型,一組標準集合,一個專案生命週期,一個依賴管理系統,和用來執行定義在 生命週期階段中外掛目標的邏輯

2.爲什麼要用它 因爲,它能幫我們解決幾個問題
a.建立專案,自動關聯和下載依賴的jar包
b.能自動部署,部署專案到雲伺服器時,整個過程全是手動部署,需要的步驟有很多,但如果雲伺服器達到上百台, 就會很麻煩,而Maven只需要一個命令,就可以把專案自動部署到遠端伺服器上。
c.它可以在沒有IDE的情況下,在伺服器端Linux環境下執行
d.對於我們的開發以及一些方面的領域上,Maven已經成爲一個標桿,就算現在暫時沒用到它,但也不得不去瞭解它, 因爲Maven功能很多,

3.maven的目錄結構
在这里插入图片描述
4.maven的生命週期
Maven 構建生命週期定義了一個專案構建跟發佈的過程。
一個典型的 Maven 構建(build)生命週期是由以下幾個階段的序列組成的:

在这里插入图片描述
clean:專案清理的處理
default(或 build):專案部署的處理
site:專案站點文件建立的處理

**5.maven的座標
a.它的組成:
groupId:定義當前Maven專案隸屬專案、組織
artifactId:定義實際專案中的一個模組
version:定義當前專案的當前版本
packaging:定義該專案的打包方式(pom/jar/war,預設爲jar)
groupId、artifactId、version簡稱爲GAV。
b.Maven爲什麼使用座標?
Maven世界擁有大量構件,需要找一個用來唯一標識一個構建的統一規範
擁有了統一規範,就可以把查詢工作交給機器
c. 如何獲取Maven座標
推薦一個Maven座標查詢網站:http://mvnrepository.com/
網站上可以搜尋具體的組織或專案關鍵字,之後複製對應的座標到pom.xml中
**

6.maven的依賴傳遞
我們的工程,所使用的大多數情況下,不會只有一成依賴關係,例如 a依賴b,我們用a->b表示,那麼,a->b,b->c,則a對於b是第一依賴,b對於c是第二依賴,而a對於c是傳遞性依賴
傳遞性依賴的scope傳遞規則,與第一依賴和第二依賴有關,下表第一列表示第一依賴,第一行表示第二依賴
在这里插入图片描述

從上表我們可以輕鬆得到幾點資訊

  • 第二依賴爲complie不改變第一依賴
  • 第二依賴test不傳遞依賴
  • 第二依賴provided只傳遞provided
  • 第二依賴runtime對compile第一依賴的傳遞依賴是runtime**

**7.maven的倉庫
Maven倉庫就是放置bai所有JAR檔案du(WAR,ZIP,POM等等)的地方,所有zhiMaven專案可以從同一個Maven倉庫中獲取自己dao所需要的依賴JAR,這節省了磁碟資源。
  此外,由於Maven倉庫中所有的JAR都有其自己的座標,該座標告訴Maven它的組ID,構件ID,版本,打包方式等等,因此Maven專案可以方便的進行依賴版本管理。
  你也不在需要提交JAR檔案到SCM倉庫中,你可以建立一個組織層次的Maven倉庫,供所有成員使用。
  簡言之,Maven倉庫能幫助我們管理構件(主要是JAR)。
  **

**

8.maven的常用命令
a. mvn clean 清空產生的專案( target裡)
b. mvn compile 編譯原始碼
c .mvn install 在本地repository中安裝jar(包含mvn compile,mvn package,然後上傳到本地倉庫)
d. mvn deploy 上傳到私服(包含mvn install,然後,上傳到私服)
e .mvn package 打包
f. mvn test 執行測試
g. mvn site 產生site
h. mvn test-compile 編譯測試程式碼
i. mvn -Dtest package 只打包不測試
j. mvn jar:jar 只打jar包
k. mvn test -skipping compile -skipping test-compile 只測試而不編譯,也不測試編譯
l. mvn deploy
m. mvn source.jar 原始碼打包

**