Maven 基礎知識

Maven生命週期

  • CleanLifecycle:在構建之前完成清理
  • DefaulLifecycle:構建核心部分,包括:編譯,測試,打包,部署等
  • SiteLifecycle:生成項目報告,站點,發佈站點

注意:不同的生命週期是相互獨立的。可以獨立完成。
在這裏插入圖片描述

CleanLifecycle生命週期

clean生命週期的各個階段:

Clean生命週期
pre-clean 執行一些需要在clean之前完成的工作
clean 移除所有上一次構建生成的文件
post-clean 執行一些需要在clean之後立刻完成的工作

命令:

  • mvn pre-clean
  • mvn clean
  • mvn post-clean

注意:生命週期後一個階段包含了前面所有的階段,即執行mvn post-clean時,mvn pre-cleanmvn clean 都會被執行,等同於 mvn pre-clean clean post clean,用以簡化命令行的輸入。

DefaulLifecycle生命週期

default生命週期的各個階段

default生命週期
validate 驗證項目是否正確,以及所有爲了完整構建必要的信息是否可用
generate-sources 生成所有需要包含在編譯過程中的源代碼
process-sources 處理源代碼,比如過濾一些值
generate-resources 生成所有需要包含在打包過程中的資源文件
process-resources 複製並處理資源文件至目標目錄,準備打包
compile 編譯項目的源代碼
process-classes 處理編譯生成的文件,例如對Java類進行字節碼增強(bytecode enhancement)
generate-test-sources 生成所有包含在測試編譯過程中的測試源碼
process-test-sources 處理測試源碼,比如過濾一些值
generate-test-resources 生成測試需要的資源文件
process-test-resources 複製並處理測試資源文件至測試目標目錄
test-compile 編譯測試源碼至測試目標目錄
test 使用合適的單元測試框架運行測試。這些測試應該不需要代碼被打包或發佈
prepare-package 在真正的打包之前,執行一些準備打包必要的操作
package 將編譯好的代碼打包成可分發的格式,如JAR,WAR,或者EAR
pre-integration-test 執行一些在集成測試運行之前需要的動作。如建立集成測試需要的環境
integration-test 如果有必要的話,處理包併發布至集成測試可以運行的環境
post-integration-test 執行一些在集成測試運行之後需要的動作。如清理集成測試環境。
verify 執行所有檢查,驗證包是有效的,符合質量規範
install 安裝包至本地倉庫,以備本地的其它項目作爲依賴使用
deploy 複製最終的包至遠程倉庫,共享給其它開發人員和項目(通常和一次正式的發佈相關)

類似於clean生命週期,後面的命令也包含前面的操作,但是可以通過一些方式跳過某些階段,如:跳過測試階段(mvn install -DskipTest)

site生命週期

site生命週期的各個階段

Site生命週期
pre-site 執行一些需要在生成站點文檔之前完成的工作
site 生成項目的站點文檔
post-site 執行一些需要在生成站點文檔之後完成的工作,並且爲部署做準備
site-deploy 將生成的站點文檔部署到特定的服務器上

Maven插件

在這裏插入圖片描述

maven中能夠執行的所有命令都是由插件完成的,maven本質上是一個插件框架。

maven官方提供的插件列表

執行maven插件的語法:

mvn [plugin-name]:[goal-name]
例:
mvn compiler:compile

maven提供的兩種插件類型

  • 構建插件:在生成過程中執行,並應在pom.xml中的元素進行配置
  • 報告插件:在網站生成期間執行的,應該在pom.xml中的元素進行配置

Maven命令

maven命令的兩種格式

  • mvn [plugin-name]:[goal-name]:指定執行的插件及插件目標
  • mvn [lifecycle]:將插件目標與生命週期綁定

常用的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應用
mvn jetty:run 調用 Jetty 插件的 Run 目標在 Jetty Servlet 容器中啓動 web 應用

注意:運行maven命令的時候,首先需要定位到maven項目的目錄,也就是項目的pom.xml文件所在的目錄。否則,必以通過參數來指定項目的目錄。

命令行參數

命令行參數
-D 傳入屬性參數,如mvn package -Dmaven.test.skip=true,跳過單元測試打包
-P 使用指定的Profile配置
**-e ** 顯示maven運行出錯的信息
-o 離線執行命令,即不去遠程倉庫更新包
-X 顯示maven允許的debug信息
-U 強制去遠程更新snapshot的插件或依賴,默認每天只更新一次

Maven倉庫

maven用戶拉取依賴流程圖

在這裏插入圖片描述

注意:虛線爲可以沒有的倉庫。首先會從本地倉庫獲取,如果本地沒有的Maven回去遠程倉庫中獲取依賴。

maven倉庫的種類

  • 本地倉庫
  • 遠程倉庫
    • 中央倉庫
    • 鏡像倉庫
    • 私服

國內知名的鏡像倉庫

  • 阿里Maven鏡像庫
  • 華爲Maven鏡像庫

主流的私服

  • Archiva(Apache)
  • Artifactory(JFrog)
  • Nexus(Sonatype)

Maven項目結構

  • src
    • main
      • java 具體源碼目錄
      • resource 具體項目資源目錄
    • test
      • java 測試源碼目錄
      • resource 測試資源目錄
  • pom.xml

Maven版本管理

  • SNAPSHOT:頻繁發佈的版本,發佈時會帶上時間,可以重複發佈爲一個版本號。
  • LATEST:最新發布的版本。
  • RELEASE:穩定版本,同一個版本號的穩定版只能發佈一次。

Maven依賴關係

  • 依賴
  • 繼承
  • 聚合

Maven可繼承的POM 元素列表如下:

groupId :項目組 ID ,項目座標的核心元素;

version :項目版本,項目座標的核心元素;

description :項目的描述信息;

organization :項目的組織信息;

inceptionYear :項目的創始年份;

url :項目的 url 地址

develoers :項目的開發者信息;

contributors :項目的貢獻者信息;

distributionManagerment:項目的部署信息;

issueManagement :缺陷跟蹤系統信息;

ciManagement :項目的持續繼承信息;

scm :項目的版本控制信息;

mailingListserv :項目的郵件列表信息;

properties :自定義的 Maven 屬性;

dependencies :項目的依賴配置;

dependencyManagement:醒目的依賴管理配置;

repositories :項目的倉庫配置;

build :包括項目的源碼目錄配置、輸出目錄配置、插件配置、插件管理配置等;

reporting :包括項目的報告輸出目錄配置、報告插件配置等。


參考地址

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