Maven (POM+約定+生命週期 + 依賴) 戰略分析
什麼是Maven?
Maven是一個專案管理工具,它包含了一個專案物件模型 (Project Object Model),一組標準集合,一個專案生命週期(Project Lif Cycle),一個依賴管理系統(Dependency Management System)和用來執行定義在生命週期階段(phase)中外掛(plugin)目標(goal)的邏輯。
通過上面,我們知道Maven是一個專案管理工具,它包含很多內容,隨著學習的深入,我們就是要不斷地瞭解它
1.專案物件模型
POM 全稱是 Project Object Model ,即專案物件模型。 pom.xml 是 maven 的專案描述檔案。 pom.xml 檔案以 xml 的形式描述專案的資訊,包括專案名稱、版本、專案id 、專案的依賴關係、編譯環境、持續整合、專案團隊、貢獻管理、生成報表等等。
2.約定優於配置
"約定優於配置", 在 maven 中並不是完全不可以修改的, 他們只是一些配置的預設值而已。 但是使用者除非必要, 並不需要去修改那些約定內容。 maven 預設的檔案存放結構如下:
• /專案目錄
o pom.xml 用於 maven 的配置檔案
o /src 原始碼目錄
/src/main 工程原始碼目錄
/src/main/java 工程 java 原始碼目錄
/src/main/resource 工程的資源目錄
/src/test 單元測試目錄
/src/test/java
o /target 輸出目錄,所有的輸出物都存放在這個目錄下
/target/classes 編譯之後的 class 檔案
3.專案生命週期
Maven的生命週期就是對所有的構建過程進行抽象和統一。包含了專案的清理、初始化、編譯、測試、打包、整合測試、驗證、部署和站點生成等幾乎所有的構建步驟。
Maven的生命週期是抽象的,即生命週期不做任何實際的工作,實際任務由外掛完成,類似於設計模式中的模板方法。
Maven有三套相互獨立的生命週期,分別是clean、default和site。每個生命週期包含一些階段(phase),階段是有順序的,後面的階段依賴於前面的階段。
4.依賴管理
這個特性讓開發者只需要關注程式碼的直接依賴,比如我們用了 spring,就加入 spring 依賴說明就可以了,至於 spring 自己還依賴哪些外部的東西,maven 幫我們搞定。
任意一個外部依賴說明包含如下幾個要素:groupId, artifactId, version, scope, type, optional。
其中前3個是必須的,各自含義如下:
groupId 必須
artifactId 必須
version 必須。
這裡的 version 可以用區間表示式來表示, 比如(2.0,)表示>2.0, [2.0,3.0)表示2.0<=ver<3.0;多個條件之間用逗號分隔,比如[1,3),[5,7]。
scope 作用域限制
type 一般在 pom 引用依賴時候出現,其他時候不用
optional 是否可選依賴
程式碼有程式碼自己的依賴,各個 maven 使用的外掛也可以有自己的依賴關係。依賴也可以是可選的。
總結:
一個事物的定義,剛開始的時候,對該事物理解的不深刻,會不知所云,但是經過了解之後,就會覺得定義才是最核心概括該事物的。理解了定義,也就從戰略上認知了該事物。當然具體使用過程中還需要在巨集觀的指導下深入學習。
相關文章
- Maven實戰:Maven生命週期Maven
- .Net核心依賴項注入:生命週期和最佳實踐
- Maven生命週期和外掛Maven
- spring迴圈依賴解決過程&Bean的生命週期SpringBean
- 淺析依賴注入框架的生命週期(以 InversifyJS 為例)依賴注入框架JS
- Maven生命週期及常用命令Maven
- Maven依賴管理:控制依賴的傳遞Maven
- Maven依賴範圍及依賴傳遞Maven
- Flutter 中的生命週期分析Flutter
- React原始碼分析 - 生命週期React原始碼
- Maven依賴機制Maven
- Maven 依賴關係Maven
- 生命週期
- Maven依賴管理系統Maven
- View生命週期與Activity生命週期的關係View
- Django(47)drf請求生命週期分析Django
- 固定資產生命週期管理的需求分析
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment
- Activity生命週期
- vue - 生命週期Vue
- React生命週期React
- ubuntu生命週期Ubuntu
- React 生命週期React
- vue生命週期Vue
- maven基礎:依賴範圍Maven
- Maven依賴衝突處理Maven
- maven2+依賴傳遞Maven
- Maven最佳實踐:管理依賴Maven
- Maven依賴版本更新踩坑Maven
- Maven快速入門(五)Maven的依賴管理Maven
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- [android]androidActivity生命週期深入分析Android
- Maven-Maven統一管理依賴的版本Maven
- Flutter核心技術與實戰 11 | 生命週期Flutter
- 深入理解maven及應用(一):生命週期和外掛Maven