Apache Maven 教程: Java 構(gòu)建自動(dòng)化工具

今天腻惠,我們將學(xué)習(xí)

1. maven是什么

2. maven特征

3. maven插件

4. mavenPOM

5. maven生命周期

6. Maven 存儲(chǔ)庫(kù)

7. 如何安裝 Maven

8.接下來要學(xué)習(xí)的高級(jí) Maven 概念

什么是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)集成

何時(shí)使用Maven

當(dāng)項(xiàng)目具有許多依賴項(xiàng)或項(xiàng)目依賴項(xiàng)版本經(jīng)常更新時(shí)辛蚊,Maven 生成工具是理想的選擇粤蝎。它也非常適合持續(xù)構(gòu)建、集成和測(cè)試袋马,或者當(dāng)您需要從源代碼生成文檔時(shí)初澎。

Maven 優(yōu)點(diǎn)和缺點(diǎn)

優(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)目中

Maven的特征

現(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.

構(gòu)建插件:構(gòu)建插件以執(zhí)行項(xiàng)目的特定目標(biāo)。這些將添加到 POM 文件中盅粪。Maven提供標(biāo)準(zhǔn)插件钓葫,或者您可以實(shí)現(xiàn)自己的插件。

生命周期票顾、階段和目標(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ù)的代碼鸭廷。

一些最常見的插件是:

Compiler Plugin:包含編譯邏輯

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 生命周期

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ù)

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

下載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)等系吭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颗品,隨后出現(xiàn)的幾起案子肯尺,更是在濱河造成了極大的恐慌,老刑警劉巖躯枢,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件则吟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锄蹂,警方通過查閱死者的電腦和手機(jī)氓仲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寨昙,你說我怎么就攤上這事讥巡。” “怎么了舔哪?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵欢顷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我捉蚤,道長(zhǎng)抬驴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任缆巧,我火速辦了婚禮布持,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陕悬。我一直安慰自己题暖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布捉超。 她就那樣靜靜地躺著胧卤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拼岳。 梳的紋絲不亂的頭發(fā)上枝誊,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音惜纸,去河邊找鬼叶撒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耐版,可吹牛的內(nèi)容都是我干的祠够。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼椭更,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哪审!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虑瀑,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤湿滓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舌狗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叽奥,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年痛侍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朝氓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魔市。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赵哲,靈堂內(nèi)的尸體忽然破棺而出待德,到底是詐尸還是另有隱情,我是刑警寧澤枫夺,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布将宪,位于F島的核電站,受9級(jí)特大地震影響橡庞,放射性物質(zhì)發(fā)生泄漏较坛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一扒最、第九天 我趴在偏房一處隱蔽的房頂上張望丑勤。 院中可真熱鬧,春花似錦吧趣、人聲如沸法竞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)爪喘。三九已至,卻和暖如春纠拔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泛豪。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工稠诲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诡曙。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓臀叙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親价卤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子劝萤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容