第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Maven 簡介

大家好,今天我們這個專題的主角是 — Maven。Maven 作為我們開發(fā)當(dāng)中比較常見的項目管理工具,用來幫助我們構(gòu)建項目,管理依賴。Maven 目前是 Apache 基金會托管的頂級項目之一,誕生自 2003 年,現(xiàn)在已經(jīng) 17 歲了。本文當(dāng)中,我們將介紹 Maven 是什么,Maven 的優(yōu)缺點(diǎn)有哪些,為什么我們要使用 Maven。

1. 什么是 Maven?

那究竟什么是 Maven 呢,在 Maven 的官網(wǎng)上可以看到如下的解釋:

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

翻譯過來就是:Maven 是一個軟件工程的項目管理工具,基于工程對象模型(POM),Maven 可以從中央信息篇中來構(gòu)建項目,生成報告和文檔

從上面的介紹中,我們可以看到 Maven 的主要功能是管理項目,構(gòu)建項目。

關(guān)于 Maven 的由來,據(jù)其創(chuàng)始人者 Jason Van Zyl 描述,是為了更加便利地建設(shè) Jakarta Turbine 項目而創(chuàng)立的一個項目。在當(dāng)時,比較流行的項目構(gòu)建工具是 Ant,但是,在這個階段中,各種 Java 項目之間是沒有什么規(guī)范的,新創(chuàng)建項目的時候,就需要重新編寫對應(yīng)的構(gòu)建腳本。Jason 就相對應(yīng)設(shè)計出一套標(biāo)準(zhǔn)的項目結(jié)構(gòu),標(biāo)準(zhǔn)的構(gòu)建方式,用來簡化項目的構(gòu)建。2003 年的時候,Maven 已經(jīng)是 Apache 基金會的頂級項目了。

2. Maven 的優(yōu)缺點(diǎn)

很多著名的項目,都是歷史的產(chǎn)物。在當(dāng)時,隨著 Java 語言的流行,越來越多的項目開始使用 Java ,但是當(dāng)時的構(gòu)建工具并不能簡單快速地完成項目構(gòu)建的流程,在這種背景下,一個簡單,方便,標(biāo)準(zhǔn)化的構(gòu)建工具-- Maven 就產(chǎn)生了。

2.1 Maven的優(yōu)點(diǎn)

從 Maven 的官網(wǎng)中我們就可以看到以下幾個特點(diǎn):

  • Making the build process easy:意思是簡化構(gòu)建過程,顧名思義,讓構(gòu)建的過程來得更簡單;

  • Providing a uniform build system:意思是提供統(tǒng)一的構(gòu)建系統(tǒng),Maven 提供了一個統(tǒng)一的構(gòu)建系統(tǒng)。例如:Maven 使用 POM 模型以及一系列的相關(guān)插件供開發(fā)者來使用;

  • Providing quality project information:意思是提供優(yōu)質(zhì)的項目信息,在使用 Maven 的過程中,你可以通過 Maven 來獲得很多關(guān)于項目的信息,例如:已經(jīng)覆蓋的單元測試報告,項目的依賴列表等等;

  • Providing guidelines for best practices development:意思是提供最佳實踐開發(fā)指南,Maven 致力于整合開發(fā)過程中的最佳實踐,并引導(dǎo)人們朝著這個方法前進(jìn)。例如:在項目過程中 Release 版本和 snapshot 版本的管理,以及 Maven 項目標(biāo)準(zhǔn)化的項目目錄結(jié)構(gòu)。

總之呢,Maven 的核心是約定大于配置,它的初衷就是幫助程序開發(fā)者在最短時間內(nèi)完成項目開發(fā)過程中的每個過程,目標(biāo)就是更簡單,更統(tǒng)一,更快速。

2.2 Maven 的缺點(diǎn)

  • Maven 的整個體系相對龐大,想要完全掌握相對困難;
  • 如果項目的依賴過多,在第一次導(dǎo)入項目的時候需要花很長的時間來加載所需要的依賴;
  • 由于某種不可抗拒力,國內(nèi)的開發(fā)者在使用 Maven 中央倉庫的時候,下載速度過慢。

但是,這些問題都是有可以有解決辦法的,我們后續(xù)會慢慢一一介紹。

2.3 相同類型工具對比

在 Java 開發(fā)的世界中,有三大主流的構(gòu)建工具,分別是 Ant ,Maven ,Gradle。

其中 Ant 出現(xiàn)的世界最早,能夠提供編譯、測試、打包的功能,但是 Ant 缺乏對依賴的管理,以及標(biāo)準(zhǔn)的項目結(jié)構(gòu)。

后來 Maven 的出現(xiàn),解決了 Ant 所不能滿足的兩個問題,從創(chuàng)建項目到構(gòu)建及發(fā)布項目的整個過程定義了一套完整的規(guī)范,并且提供中央倉庫,對依賴進(jìn)行管理。

后來,隨著 Android 的流行,近年來,以 Gradle 作為項目的構(gòu)建工具也越來越流行。Gradle 在 Maven 的基礎(chǔ)上,使用基于 Groovy 的特定領(lǐng)域語言(DSL)來完成配置聲明,相較于 XML 來說,更加靈活。
目前,Maven 和 Gradle 基本上算是平分秋色的局面,在實際的開發(fā)中,后臺項目管理更傾向于使用 Maven,而在移動端開發(fā)中,Gradle 的占比更大。當(dāng)然兩者之間也有很多相通的地方,比如依賴管理,一致的項目結(jié)構(gòu)。

3. Maven 的版本

Maven 從發(fā)布到現(xiàn)在已經(jīng)經(jīng)歷過很多個版本迭代,目前最新的版本是 2019-11-25 發(fā)布的 Maven 3.6.3 版本。

  • 1.0-2.x : 官方不再進(jìn)行維護(hù),也不建議開發(fā)者使用;
  • 3.0: Maven3.x 的第一個版本,也算是 Maven 的里程碑版本,完全向后兼容 Maven2,增加了 SLF4J 來進(jìn)行日志管理,并且提高了項目構(gòu)建效率和插件的擴(kuò)展性;
  • 3.5.0: 該版本顯著的變化是 Maven 的控制臺支持不同級別日志輸出不同顏色;
  • 3.6.3: 目前的最新版本,schemaLocations 地址支持 https。在后續(xù)的章節(jié)中,我們也會用這個版本來進(jìn)行講解。

4. 為什么使用 Maven?

說到這個問題,我們首先要看一下,如果沒有 Maven,那么我們的工作是什么樣子的呢?

場景一

當(dāng)我們在開發(fā)過程中,當(dāng)我們開發(fā)某個新功能或者修復(fù)了某個 Bug,都需要手動進(jìn)行整個項目編譯,運(yùn)行單元測試,生成項目文檔,打包,部署環(huán)境這些步驟。一旦需要重新修改代碼的時候,便要將上述的操作重復(fù)一遍。機(jī)械性的重復(fù)勞動充斥著整個開發(fā)過程;

場景二

由于不同的人可能會有不同的習(xí)慣或者說是個人偏好,每當(dāng)我們新建一個項目的時候,所建出來的項目可能會千奇百怪,這也給后續(xù)的維護(hù)升級帶來了諸多的不便;

場景三

當(dāng)項目需要依賴某個 jar 包的時候,需要到互聯(lián)網(wǎng)上去尋找對應(yīng)的 jar 包,找到 jar 包之后,將這個 jar 包添加到項目的 lib 目錄下,項目組里面不同的人可能會找到不同的 jar 包,不同的 jar 包直接可能會存在沖突,這個時候,就需要去手動解決沖突;

看到這里,只想說一句,我太難了。但是,不要慌,Maven 的存在,就是為了幫助解決這些問題。

使用 Maven 之后,只需要執(zhí)行一個命令就可以完成編譯,運(yùn)行單元測試,打包,部署的整個流程;并且 Maven 以 POM 的形式來管理 jar 包依賴;還有一點(diǎn)就是,使用 Maven 構(gòu)建出的項目,結(jié)構(gòu)統(tǒng)一,方便后續(xù)的維護(hù)升級。

5. 學(xué)習(xí)基礎(chǔ)

本教程當(dāng)中使用了一些 Java 項目作為例子,所以需要了解簡單的 Java 基礎(chǔ)。

6. 本課程如何設(shè)計?

在本課程中,我們首先會對 Maven 的核心概念進(jìn)行講解,并且,通過一些簡單的項目,來加深對這些概念的理解,在課程的過程中,如果遇到平時工作時常使用的點(diǎn),則會穿插一些實際工作中的最佳實踐,方便在工作中能夠?qū)W以致用。