官术网_书友最值得收藏!

1.6 Maven POM文件介紹

筆者之前寫過一本書,由于Jar包管理工具還不成熟,需要手動加入Jar包,現在Maven已經很成熟,并被廣泛應用,其作為管理Jar工具包很方便,當然還有其他的一些管理Jar工具,比如Ant和Gradle。本書主要使用Maven構建工具,故在這里有必要用一節進行講解。

Maven是Java世界中構建工具之一,可以通過一小段描述信息來管理項目的構建。構建軟件項目主要包括以下任務:下載依賴項,并在類路徑上放置其他Jar,將源代碼編譯為二進制代碼,運行測試,然后將編譯后的代碼打包成可部署的工件(如JAR、WAR和ZIP文件),以及部署這些工件到應用程序服務器或存儲庫。Maven能自動執行這些任務,最大限度地降低人工在手動構建軟件時出錯的可能,并將編譯和打包代碼的工作與代碼構造分開。Maven主要功能有依賴管理系統、多模塊構建、一致的項目結構、一致的構建模型和插件機制。

Maven項目的配置是通過項目對象模型(POM)完成的,即用pom.xml文件表示。POM描述了項目、管理依賴項,并配置用于構建軟件的插件。正如前面示例中pom文件展示。下面是Maven基本結構:

上面代碼列出的是POM基本結構,其中元素project是所有pom.xml的根元素,它還聲明了一些POM相關的命名空間及xsd元素等。

· modelVersion:用于描述POM模型的版本;

· groupId:用于描述創建項目所屬公司或組唯一基本名稱。這個名稱應該和項目所在的組織或公司存在關聯,定義方法一般都是網址倒序,例如com.zioer;

· artifactId:用于描述當前項目的唯一名稱;

· version:描述當前項目的版本,SNAPSHOT意為快照,說明該項目還處在開發中,還有其他一些元素沒有自動生成,比如下面元素;

· Packaging:用于描述打包方式,比如war、jar或zip等;

· Name:用于描述一個對于用戶更為友好的項目名稱;

· URL:用于描述項目的主頁。

其中,groupId、artifactId和version組合在一起便形成唯一標識符,其是指定項目將使用哪些外部庫版本的原理。

Maven的依賴管理是重點,項目無需在本地管理這些依賴,而是需要時從中央存儲倉庫中自動下載,那么在實際中,這就是依賴,需要提供groupId、artifactId和庫的版本。下面是示例:

Maven在處理依賴項時,它會將Spring Core庫中指定版本下載到本地Maven存儲庫中,并在項目中引用。如果在依賴中沒有指定版本,則會下載最新版本。

在pom.xml中,可以使用元素properties來管理各依賴的版本,有助于文檔的閱讀,比如下面示例:

這樣,當有多個地方用到同一個元素spring.version時,只需要引用該元素即可,便于修改一處,達到統一修改的目的。

在POM文件中,一個重要的元素是build,其提供了Maven目標、已編譯項目的目錄以及應用程序的最終名稱的描述。基本形式如以下代碼所示:

在上面代碼中,元素介紹如下:

· defaultGoal:執行build任務時,如果沒有指定目標,將使用的默認值;

· directory:用于描述build目標文件的存放目錄,默認在${basedir}/target目錄;

· finalName:build目標文件的名稱,默認為${artifactId}-${version};

· filters:定義?.properties文件,包含一個properties列表,該列表會應用到支持filter的resources中。

在POM文件中,另一個重要特性是它對配置文件的支持,即元素profiles,包含了一組配置值。通過使用配置文件,可以為不同的環境(如生產/測試/開發)自定義構建,基本形式如以下代碼所示:

以上介紹POM文件的基本構成,并能根據項目實際構建需要的POM文件,Maven重在解決Jar包依賴,并為項目中Jar包版本升級、測試、打包等提供方便,更重要的是,開發人員只需要關注項目具體本身,不再需要為其各種依賴所干擾。

主站蜘蛛池模板: 泾川县| 临湘市| 承德县| 湄潭县| 新民市| 茌平县| 城口县| 麟游县| 榆林市| 富川| 兴仁县| 通渭县| 昌江| 洛南县| 高阳县| 江山市| 阳新县| 怀仁县| 乌什县| 噶尔县| 连山| 南江县| 清新县| 古田县| 昭苏县| 汉源县| 郓城县| 洮南市| 行唐县| 紫金县| 中西区| 五常市| 得荣县| 绥滨县| 彭泽县| 宁陵县| 屯门区| 新和县| 元氏县| 平乐县| 晋中市|