1. 程式人生 > 程式設計 >maven 繼承

maven 繼承

maven 的繼承,能讓我們從父pom中繼承到一些配置。我們可以將一些通用的配置放在父pom中,來減少配置項。

例項

如圖所示,有一個 inherit 專案,並且引入了一個依賴

假如我想繼承這個pom,該怎麼做呢?

只需宣告 parent 即可。注意,version必須填寫

<parent>
    <groupId>com.wqlm</groupId>
    <artifactId>inherit</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../inherit</relativePath>
</parent>
複製程式碼

relativePath

relativePath 的值是父專案的相對於當前pom的路徑

如上圖,inherit 和 inherit-util 在同一個目錄下,所以inherit-util的 relativePath../inherit

注意 relativePath 的值是父專案的相對於當前pom的路徑,而不是artifactId。如下圖

Maven首先在當前構建專案的環境中查詢父pom,然後專案所在的檔案系統查詢,然後是本地儲存庫,最後是遠端repo。

比如你將 inherit 安裝到本地倉庫中之後,子專案可以不寫路徑

能被繼承的元素

子pom 能繼承父 pom 的如下元素(包括元素的子元素)

  • groupId
  • version
  • description
  • url
  • inceptionYear
  • organization
  • licenses
  • developers
  • contributors
  • mailingLists
  • scm
  • issueManagement
  • ciManagement
  • properties
  • dependencyManagement
  • dependencies
  • repositories
  • pluginRepositories
  • build
  • plugin executions with matching ids
  • plugin configuration
  • etc.
  • reporting
  • profiles

不能被繼承的元素

  • artifactId
  • name
  • prerequisites

packaging 的型別

packaging 預設值為 jar,也就是將專案打包成jar包

繼承對 packaging 的型別沒有要求,如例項所示,父類的 packaging 沒寫,則說明父類的打包型別為jar,但依然可以被子類繼承。

實際使用中,父類一般不會寫程式碼,一般負責通用配置,所以大部分情況下都會把packaging設定為pom

相關文章

maven 聚合

Maven 多模組管理