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

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

1. maven是什么

2. maven特征

3. maven插件

4. mavenPOM

5. maven生命周期

6. Maven 存儲庫

7. 如何安裝 Maven

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

什么是Maven

生成是將源代碼文件轉(zhuǎn)換為軟件工件以在計(jì)算機(jī)上運(yùn)行的過程。此過程通常由構(gòu)建工具(控制其他程序的程序)管理。

Maven是Java項(xiàng)目中最流行的事實(shí)上的構(gòu)建和管理工具。Maven 基于項(xiàng)目對象模型 (POM) 的概念,它有助于從中心信息自動管理項(xiàng)目的生成、文檔和報(bào)告。

多年來,Maven變得非常流行,它定義了用于構(gòu)建軟件的通用接口。Maven實(shí)現(xiàn)了可以從Maven存儲庫中檢索的插件。

簡而言之,Maven是一個(gè)用于構(gòu)建和管理基于Java的項(xiàng)目的工具,使Java開發(fā)人員的工作變得更加容易。

Maven 為許多任務(wù)提供支持,包括:

從頭開始輕松構(gòu)建 Java 項(xiàng)目,無需編寫腳本

輕松添加 JAR 和項(xiàng)目依賴項(xiàng)

訪問項(xiàng)目信息,例如日志文檔、單元測試、依賴項(xiàng)列表等。

更新 JAR 和依賴項(xiàng)的中央存儲庫。

將 Java 項(xiàng)目與控制系統(tǒng)集成

何時(shí)使用Maven

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

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

優(yōu)點(diǎn):

Maven可以通過讀取文件自動添加所有項(xiàng)目依賴項(xiàng)。pom

在文件中添加依賴項(xiàng)非常容易。pom

Maven 可以輕松地在不同的環(huán)境中啟動項(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)目對象模型 (POM) 文件是包含項(xiàng)目和配置信息的 XML 文件。Maven POM文件用于執(zhí)行命令。

#依賴項(xiàng)和存儲庫:依賴項(xiàng)是外部 Java 庫,而存儲庫是打包的 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的核心很小,因此插件對于利用此工具的智能至關(guān)重要。插件只是實(shí)現(xiàn)邏輯以在構(gòu)建過程中執(zhí)行各種任務(wù)的代碼。

一些最常見的插件是:

Compiler Plugin:包含編譯邏輯

Jar Plugin:包含創(chuàng)建 jar 的邏輯

Surefire Plugin:包含執(zhí)行單元測試的邏輯

Maven插件由作為工作單元的目標(biāo)組成。目標(biāo)是我們想要對由POM文件定義的項(xiàng)目執(zhí)行的操作。查看此圖以了解這些組件如何交互:


Maven POM

Maven 項(xiàng)目由 POM 文件(項(xiàng)目對象模型)描述,該文件是 Java 項(xiàng)目的聲明性描述。POM是一個(gè)XML文件,用于定義項(xiàng)目的唯一Maven坐標(biāo),依賴項(xiàng),所需的插件,參數(shù)等。

調(diào)用時(shí),Maven 會在當(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)目的根元素

型號我們建議使用 4.0.0 版版本

組標(biāo)識:這是項(xiàng)目組的唯一 ID

artifactId:這給出了一個(gè)項(xiàng)目名稱

版本:保存項(xiàng)目的版本號

其他元素包括依賴項(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 存儲庫

Maven 中的存儲庫包含構(gòu)建工件和依賴項(xiàng)。在軟件開發(fā)中,工件是指在過程中生成的對象,如設(shè)計(jì)文檔、數(shù)據(jù)模型和工作流圖。

Maven存儲庫有兩種主要類型:

本地存儲庫:Maven 運(yùn)行并捕獲遠(yuǎn)程下載的目錄

遠(yuǎn)程存儲庫:任何其他類型的存儲庫。例如,由第三方設(shè)置的存儲庫或公司內(nèi)的 HTTP 服務(wù)器。

一般來說,除了清理之外,本地存儲庫可以單獨(dú)保留。您將需要下載遠(yuǎn)程存儲庫,這些存儲庫在聲明依賴項(xiàng)時(shí)觸發(fā)。

默認(rèn)情況下,Maven 將從中央存儲庫下載。

如何安裝 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í)的高級 Maven 概念

您現(xiàn)在應(yīng)該對Maven是什么以及如何在Java項(xiàng)目中使用它有一個(gè)深刻的了解。Maven 可以使您的構(gòu)建過程更加輕松,并自動執(zhí)行耗時(shí)的任務(wù)。但是Maven還可以為您提供更多。

接下來您應(yīng)該學(xué)習(xí)的高級Maven概念是:

Maven 中的依賴關(guān)系管理和作用域

插件管理

梅文超級聚甲醛

Maven 中的聚合

要開始使用這些高級概念并更多地練習(xí)我們今天所學(xué)的知識,請查看 Educateative 的課程使用 Maven 構(gòu)建 Java 項(xiàng)目。這個(gè)獨(dú)特的課程提供了易于遵循的動手瀏覽器內(nèi)練習(xí),以教授 Maven 概念,如插件、目標(biāo)、依賴項(xiàng)等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容