Maven (POM+約定+生命週期 + 依賴) 戰略分析

00潤物無聲00發表於2016-06-05

什麼是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 使用的外掛也可以有自己的依賴關係。依賴也可以是可選的。


總結:

    一個事物的定義,剛開始的時候,對該事物理解的不深刻,會不知所云,但是經過了解之後,就會覺得定義才是最核心概括該事物的。理解了定義,也就從戰略上認知了該事物。當然具體使用過程中還需要在巨集觀的指導下深入學習。


相關文章