1. 程式人生 > >Maven(四)——POM繼承與多模組構建

Maven(四)——POM繼承與多模組構建

約定(慣例)優先於配置

  • 標準的目錄結構
    • *.java放到src/main/java目錄下
    • *.class在target目錄下
    • 配置及靜態檔案
  • 這樣做的好處就是:我們只需要把對應的原始碼、檔案放到正確的目錄下,然後maven會自動幫我們找到,做其他所有的事情。
  • 專案描述符,pom.xml。

POM,專案物件模型

  • xml檔案,pom.xml
  • project 等價於 artifact
  • 專案型別(packaging)
    • pom,jar,war
  • 座標(groupId artifactId version)
  • 屬性,${propery}
  • 依賴(dependency標籤)
  • 構建配置(build標籤,plugin標籤)
  • 多專案(parent標籤,modules標籤)、繼承
  • 專案總體資訊(名稱、作者、開源協議)

配置pom遇到的問題

在實際開發中,一個現實的專案一般都是把一個專案拆分成多個子專案,這樣做的好處是把一個大專案模組化,每個模組可以分開進行開發。但是在一個由多個子專案構成的大專案,在maven的配置過程中,往往會遇到一些問題。

  • 多個子專案配置重複
  • 修改繁瑣
  • 依賴版本不一致
  • 配置管理混亂
    這時,可以使用pom的繼承,把公共的部分嘗試提到父節點去,子節點從父節點繼承。

pom的繼承

  • 可以類比JAVA中的繼承
  • 繼承或者覆蓋,Override
  • 可繼承項
    • 座標屬性,如groupId
    • 依賴配置
    • 外掛配置
    • 一般性資訊,如開發者資訊

Super POM

  • 所有Maven專案的POM都繼承Super POM
  • 是Maven的組成部分
  • 超級POM定義了一組被所有專案共享的預設設定
    • 預設的檔案位置
    • 統一的外掛配置
    • 預設的中央倉庫配置
    • 其他的一些設定
  • mvn help:effective-pom , 就是eclipse中 Effective POM 可以看到一個POM繼承了Super POM中所有的配置項後最後的POM的樣子。
  • 使用parent元素,可以顯示配置父POM。

多專案構建

  • parent專案,專案型別是pom。
    • 定義modules。
  • 子模組中配置parent,繼承。
  • 統一配置提到parent專案中。
  • 既使用繼承又使用組合 。