1. 程式人生 > >【maven】pom檔案詳解

【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 元素的專案,然後使用它指定的版本號

小結

      一般配置檔案在我們的專案中起到了非常大的作用,其中的每一個節點都有各自的含義,所以嘗試著去了解他們,學習它們。