【maven】pom檔案詳解
前言
Maven是一個跨平臺的專案管理工具 Maven主要服務於基於Java平臺的專案構建、依賴管理和專案資訊管理。無論是小型的開源類庫專案,還是大型的企業級應用;無論是傳統的瀑布式開發,還是流行的敏捷模式,Maven都能大顯身手。Maven專案的核心是pom.xml檔案,POM(Project Object Model,專案物件模型)定義了專案的基本資訊,用於描述專案如何構建,宣告專案依賴。現在我們來具體的瞭解一下pom.xml檔案。
敘述
我們先通過一張圖片來大概的瞭解一下pom.xml檔案的構成。
XML:程式碼的第一行是XML頭,指定了該xml文件的版本和編碼方式。
project元素:project是所有pom.xml的根元素,它還聲明瞭一些POM相關的名稱空間及xsd元素,雖然這些屬性不是必須的,但使用這些屬效能夠讓第三方工具幫助我們快速編輯POM。
modelVersion:根元素下的第一個元素modelVersion指定了當前POM模型的版本。
groupId、artifactId、version,這三個元素定義了一個專案基本的座標,在maven的世界中,任何的jar、pom、war都是以基於這些基本的座標進行區分的。
groupId定義了專案屬於哪個組,這個組往往和專案所在的組織或公司存在關聯。
artifactId定義了當前maven專案在組中唯一的ID。
version指定了專案當前的版本。
packaging元素定義maven專案的打包方式。
name元素聲明瞭一個對於使用者更為友好的專案名稱。
classifier:該元素用來幫助定義構建輸出的一些附屬構件。
properties:自定義的maven屬性。
dependencies元素,包含了多個dependency元素。這是POM中定義專案依賴的位置。
build:包括專案的原始碼目錄配置、輸出目錄配置、外掛配置、外掛管理配置等。
profiles:實現多環境的構建可移植性
dependencyManagement:專案的依賴管理配置
properties元素:配置檔案,這裡的peoperties是管理jar包的版本號的。當我們的某一個檔案出現了像如上所寫的,版本號被重複使用的話,我們可以規範起來,把版本號寫進peoperties檔案,然後後面直接引用,這樣對於檢視和維護來說是非常方便的
dependency元素:Maven用了一個專案依賴 (Dependency)的概念,用俗話說,就是我的專案需要用你這個jar包,就稱之為我的專案依賴你這個包,換句話說,你這個JAR包就是我這個專案的Dependency。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>${version.junit}</version>
</dependency>
scope元素用來定義依賴範圍,下一篇部落格小編將會詳解maven中的依賴管理。
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>${version.swagger}</version>
<exclusions>
<exclusion>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
</exclusion>
<exclusion>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</exclusion>
</exclusions>
</dependency>
exclusions:用來排除傳遞性依賴
type:依賴的型別,對應於專案座標定義的packaging.
optional:標記依賴是否可選。
build元素
profiles元素
dependencyManagement元素
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<type>pom</type>
<scope>import</scope>
<version>${version.arquillian}</version>
</dependency>
</dependencies>
</dependencyManagement>
Maven中的dependencyManagement元素提供了一種管理依賴版本號的方式。在dependencyManagement元素中宣告所依賴的jar包的版本號等資訊,那麼所有子專案再次引入此依賴jar包時則無需顯式的列出版本號。Maven會沿著父子層級向上尋找擁有dependencyManagement 元素的專案,然後使用它指定的版本號小結
一般配置檔案在我們的專案中起到了非常大的作用,其中的每一個節點都有各自的含義,所以嘗試著去了解他們,學習它們。