今天腻惠,我們將學(xué)習(xí)
8.接下來要學(xué)習(xí)的高級(jí) Maven 概念
生成是將源代碼文件轉(zhuǎn)換為軟件工件以在計(jì)算機(jī)上運(yùn)行的過程捉邢。此過程通常由構(gòu)建工具(控制其他程序的程序)管理盖桥。
Maven是Java項(xiàng)目中最流行的事實(shí)上的構(gòu)建和管理工具勃痴。Maven 基于項(xiàng)目對(duì)象模型 (POM) 的概念恬惯,它有助于從中心信息自動(dòng)管理項(xiàng)目的生成誉尖、文檔和報(bào)告狭郑。
多年來腹暖,Maven變得非常流行,它定義了用于構(gòu)建軟件的通用接口翰萨。Maven實(shí)現(xiàn)了可以從Maven存儲(chǔ)庫(kù)中檢索的插件脏答。
簡(jiǎn)而言之,Maven是一個(gè)用于構(gòu)建和管理基于Java的項(xiàng)目的工具亩鬼,使Java開發(fā)人員的工作變得更加容易殖告。
Maven 為許多任務(wù)提供支持,包括:
從頭開始輕松構(gòu)建 Java 項(xiàng)目雳锋,無需編寫腳本
輕松添加 JAR 和項(xiàng)目依賴項(xiàng)
訪問項(xiàng)目信息黄绩,例如日志文檔、單元測(cè)試玷过、依賴項(xiàng)列表等爽丹。
更新 JAR 和依賴項(xiàng)的中央存儲(chǔ)庫(kù)。
將 Java 項(xiàng)目與控制系統(tǒng)集成
當(dāng)項(xiàng)目具有許多依賴項(xiàng)或項(xiàng)目依賴項(xiàng)版本經(jīng)常更新時(shí)辛蚊,Maven 生成工具是理想的選擇粤蝎。它也非常適合持續(xù)構(gòu)建、集成和測(cè)試袋马,或者當(dāng)您需要從源代碼生成文檔時(shí)初澎。
優(yōu)點(diǎn):
Maven可以通過讀取文件自動(dòng)添加所有項(xiàng)目依賴項(xiàng)。pom
在文件中添加依賴項(xiàng)非常容易虑凛。pom
Maven 可以輕松地在不同的環(huán)境中啟動(dòng)項(xiàng)目碑宴,而無需處理注入软啼、構(gòu)建等。
缺點(diǎn):
Maven 必須與 IDE 的 Maven 插件一起下載
只能將現(xiàn)有依賴項(xiàng)添加到項(xiàng)目中
現(xiàn)在我們知道了Maven是什么以及它是如何工作的墓懂,讓我們了解這個(gè)構(gòu)建工具最顯著的功能焰宣。我們將在本文后面更詳細(xì)地分解這些內(nèi)容霉囚。
POM :項(xiàng)目對(duì)象模型 (POM) 文件是包含項(xiàng)目和配置信息的 XML 文件捕仔。Maven POM文件用于執(zhí)行命令。
#依賴項(xiàng)和存儲(chǔ)庫(kù):依賴項(xiàng)是外部 Java 庫(kù)盈罐,而存儲(chǔ)庫(kù)是打包的 JAR 文件的目錄榜跌。Maven repository.
生命周期票顾、階段和目標(biāo):構(gòu)建生命周期由多個(gè)構(gòu)建階段組成础浮,這些階段只是一系列項(xiàng)目目標(biāo)。生成生命周期稱為 Maven 命令奠骄。
構(gòu)建配置文件:生成配置文件是一組配置值豆同,允許您使用不同的配置進(jìn)行構(gòu)建。您可以使用配置文件的元素將構(gòu)建配置文件添加到 POM 文件含鳞。
Maven 插件
Maven可以接受各種插件來執(zhí)行任務(wù)影锈。由于Maven的核心很小,因此插件對(duì)于利用此工具的智能至關(guān)重要蝉绷。插件只是實(shí)現(xiàn)邏輯以在構(gòu)建過程中執(zhí)行各種任務(wù)的代碼鸭廷。
Jar Plugin:包含創(chuàng)建 jar 的邏輯
Surefire Plugin:包含執(zhí)行單元測(cè)試的邏輯
Maven插件由作為工作單元的目標(biāo)組成。目標(biāo)是我們想要對(duì)由POM文件定義的項(xiàng)目執(zhí)行的操作熔吗。查看此圖以了解這些組件如何交互:
Maven POM
Maven 項(xiàng)目由 POM 文件(項(xiàng)目對(duì)象模型)描述辆床,該文件是 Java 項(xiàng)目的聲明性描述。POM是一個(gè)XML文件桅狠,用于定義項(xiàng)目的唯一Maven坐標(biāo)讼载,依賴項(xiàng),所需的插件垂攘,參數(shù)等维雇。
調(diào)用時(shí),Maven 會(huì)在當(dāng)前目錄結(jié)構(gòu)中查找 POM 文件晒他。沒有它吱型,將拋出錯(cuò)誤。然后陨仅,Maven讀取POM津滞,收集配置信息并執(zhí)行目標(biāo)铝侵。
可以在 POM 中指定的一些配置包括項(xiàng)目依賴項(xiàng)、可以執(zhí)行的插件或目標(biāo)触徐、構(gòu)建配置文件等咪鲜。
您還可以指定其他信息,例如項(xiàng)目版本撞鹉、描述疟丙、開發(fā)人員和郵件列表。
讓我們看一下 POM 文件的最小版本鸟雏。
<project>
? ? <modelVersion>4.0.0</modelVersion>
? ? <groupId>io.datajek</groupId>
? ? <artifactId>empty-project</artifactId>
? ? <version>1</version>
</project>
該文件包含最少的項(xiàng)目描述享郊,沒有依賴項(xiàng)或插件。如果在包含上述 POM 文件的目錄中運(yùn)行孝鹊,您將看到成功的生成炊琉。mvn install
我們有幾個(gè)元素用于創(chuàng)建此文件:
項(xiàng)目:新項(xiàng)目的根元素
型號(hào)我們建議使用 4.0.0 版版本
組標(biāo)識(shí):這是項(xiàng)目組的唯一 ID
artifactId:這給出了一個(gè)項(xiàng)目名稱
版本:保存項(xiàng)目的版本號(hào)
其他元素包括依賴項(xiàng)、名稱又活、范圍和打包苔咪。
Maven 支持構(gòu)建生命周期,這是一組用于構(gòu)建項(xiàng)目的有序操作柳骄。構(gòu)建生命周期由構(gòu)建階段組成团赏,每個(gè)階段都有插件目標(biāo),這些目標(biāo)在階段執(zhí)行時(shí)執(zhí)行夹界。
為了更好地理解這一點(diǎn)馆里,讓我們看一個(gè)例子。干凈的生命周期包括:
pre-clean
clean
post-clean
生命周期的各個(gè)階段按順序執(zhí)行可柿,這意味著將首先執(zhí)行鸠踪、執(zhí)行第二個(gè)階段,最后執(zhí)行复斥。pre-cleancleanpost-clean
如果我們使用 在 EmptyProject 中運(yùn)行清理階段营密,我們可以使用該命令指定階段。當(dāng)我們執(zhí)行該階段時(shí)目锭,如果前一階段有任何插件目標(biāo)评汰,它也將執(zhí)行。mvn cleanmvnclean
Maven 中的存儲(chǔ)庫(kù)包含構(gòu)建工件和依賴項(xiàng)痢虹。在軟件開發(fā)中被去,工件是指在過程中生成的對(duì)象,如設(shè)計(jì)文檔奖唯、數(shù)據(jù)模型和工作流圖惨缆。
Maven存儲(chǔ)庫(kù)有兩種主要類型:
本地存儲(chǔ)庫(kù):Maven 運(yùn)行并捕獲遠(yuǎn)程下載的目錄
遠(yuǎn)程存儲(chǔ)庫(kù):任何其他類型的存儲(chǔ)庫(kù)。例如,由第三方設(shè)置的存儲(chǔ)庫(kù)或公司內(nèi)的 HTTP 服務(wù)器坯墨。
一般來說寂汇,除了清理之外,本地存儲(chǔ)庫(kù)可以單獨(dú)保留捣染。您將需要下載遠(yuǎn)程存儲(chǔ)庫(kù)骄瓣,這些存儲(chǔ)庫(kù)在聲明依賴項(xiàng)時(shí)觸發(fā)。
默認(rèn)情況下耍攘,Maven 將從中央存儲(chǔ)庫(kù)下載榕栏。
下載Maven非常容易。首先驗(yàn)證您是否安裝了 Java少漆。檢查是否設(shè)置了 Java 環(huán)境變量臼膏。從那里硼被,從官方網(wǎng)站下載Maven示损。
您可以從系統(tǒng)中的任何位置解壓縮 zip,并將 bin 目錄添加到 PATH 環(huán)境變量和系統(tǒng)變量中嚷硫。
從那里检访,然后運(yùn)行命令。正確的安裝將打印以下行:cmdmvm -v
接下來要學(xué)習(xí)的高級(jí) Maven 概念
您現(xiàn)在應(yīng)該對(duì)Maven是什么以及如何在Java項(xiàng)目中使用它有一個(gè)深刻的了解仔掸。Maven 可以使您的構(gòu)建過程更加輕松脆贵,并自動(dòng)執(zhí)行耗時(shí)的任務(wù)。但是Maven還可以為您提供更多起暮。
接下來您應(yīng)該學(xué)習(xí)的高級(jí)Maven概念是:
Maven 中的依賴關(guān)系管理和作用域
插件管理
梅文超級(jí)聚甲醛
Maven 中的聚合
要開始使用這些高級(jí)概念并更多地練習(xí)我們今天所學(xué)的知識(shí)卖氨,請(qǐng)查看 Educateative 的課程使用 Maven 構(gòu)建 Java 項(xiàng)目。這個(gè)獨(dú)特的課程提供了易于遵循的動(dòng)手瀏覽器內(nèi)練習(xí)负懦,以教授 Maven 概念筒捺,如插件、目標(biāo)纸厉、依賴項(xiàng)等系吭。