maven 繼承
阿新 • • 發佈:2019-12-31
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