昨天在阿里雲看到了一句話,“當你Learning和Trying之后,如果能盡量把Teaching也做好,會促進我們思考”。共勉!
這是關於Maven的第三篇博客,這次我們深入了解pom.xml配置文件,它是Maven項目的基礎文件,也是最為重要的文件。
一、對本項目的聲明:

如上圖所示,這段截取的代碼是一個普通項目的配置的開始,是對本項目的聲明,其中——
<modleVersion/>標簽:指定了當前pom的版本。
<groupId/>標簽:定義了該項目屬於哪個組,這與所在的組織和公司是有關聯的,它是該組織域名的倒置。而對於私人來說,比如我,cn代表中國,zuoyu是我在網絡世界的ID,account代表這個項目的名字。
<artifactId/>標簽:這個定義了當前Maven項目組中的唯一ID,可以理解為一個大項目中的一個小項目,比如這個,就是account項目中的郵件服務模塊。
<version/>標簽:顧名思義,這是版本說明,而SNAPSHOT說明版本不穩定。
<packaging/>標簽:這個是指定打包方式,如果不說明,默認為jar方式。
<name/>標簽:這個是給該項目起一個更友好的名字,方便交流。
<url/>標簽:該項目的主頁URL,用於生成Maven文檔使用,一般私人寫是用不到的。
二、坐標與依賴

如上圖所示,這段截取代碼是一段對依賴的說明,其中——
<dependencies/>標簽:是依賴的root目錄,所有的依賴都要放在這個大標簽內。
<dependency/>標簽:代表着一個依賴,里面聲明要依賴的信息。
<groupId/>標簽:定義當前Maven項目隸屬的實際項目。如果你與之前的本項目聲明信息中的groupId聯想一下,你就會明白。
<artifactId/>標簽:該元素定義實際項目中的一個Maven項目(模塊)。
<version/>標簽:定義當前Maven項目所處的版本。
<scope/>標簽:對依賴范圍的說明,這個我們看下面...
依賴范圍說明
首先我們要清楚,Maven環境里有三個ClassPath:分別為編譯ClassPath、測試ClassPath、運行ClassPath。
依賴范圍就是為了控制依賴與這三種ClassPath的關系,在Maven中有以下幾種ClassPath:

除此之外,還有一個import的導入依賴范圍,與<dependencyManagement/>標簽有關。
三、插件的配置

這是一段對插件描述的截取代碼段,這個插件是幾乎所有Maven項目都要聲明的插件,即編譯插件聲明,沒有此聲明,項目就無法編譯。其中——
<build/>標簽:是對項目構建聲明的大標簽,里面所有聲明都與項目的構建有關。
<plugins/>標簽:這個是所有插件的root標簽。
<plugin/>標簽:此標簽代表為一個插件。
<groupId/>、<artifactId/>和<version/>三個標簽聲明了該插件的坐標。
<configuration/>標簽:此標簽內聲明了對該插件的配置,此標簽內的子標簽隨着插件的不同而不同,變化多端,不細說,見多了就會了。
四、資源路徑的配置

這段截取的代碼段是關於資源路徑的配置,是指定資源被打包后所放位置。在這其中——
<resources/>標簽:這個元素描述了項目相關的所有資源路徑列表。
<resource/>標簽:其中的一個資源路徑配置,例如和項目相關的屬性文件,這些資源被包含在最終的打包文件里。
<directory/>標簽:描述存放資源的目錄,該路徑相對POM路徑,用來指定resources插件處理哪個目錄下的資源文件。
<includes/>標簽:包含的模式列表,就是該操作都操作哪些文件。
其中還有一些標簽沒有用得上,比如——
<excludes/>標簽:與<includes/>標簽對立,排除的模式列表。
<targetPath/>標簽:指定打包后該資源所放位置。
<filtering/>標簽:是否使用參數值代替參數名。參數值取自properties元素或者文件里配置的屬性,文件在filters元素里列出。
<filters/>標簽:當filtering開關打開時,使用到的過濾器屬性文件列表。
五、測試資源路徑的配置:

這段截取代碼是對測試資源路徑的描述,與資源配置路徑大同小異,描述了單元測試相關的所有資源路徑,例如和單元測試相關的屬性文件。
六、全局配置

這個配置非常的自由,你可以聲明出任何標簽——
其中的<project.build.sourceEncoding/>聲明了該項目構建的字符編碼為UTF-8格式。當你在配置build的內容時,它會隱式的起到作用。
其中的<springframework.version/>聲明了該項目的spring依賴包為2.5.6版本,是我聲明的標簽,當然你必須這樣使用才行:

O(∩_∩)O,這些都是常用的標簽,我給了一下總結,當然Maven的pom.xml還有很多標簽,以后用到了再研究吧!
還有關於Maven的繼承與聚合中某些標簽的用法,請移步至 我的Maven的多模塊博客。
博客中如有不嚴謹、不恰當的描述,歡迎批評。
我的郵箱: zuoyuip@qq.com
