大數(shù)據(jù)開發(fā):告訴你什么是Maven?
關于大數(shù)據(jù)開發(fā)的Maven可謂是一個略微復雜的構成,從基礎概念到它的具體用途都可謂是有滿滿的干貨知識。這里先用一句話來進行概括,Maven 是一個項目管理工具,可以對 Java 項目進行構建、依賴管理,是一個自動化構建工具。
一、什么是Maven
Maven , 用于Java項目的構建 , 依賴管理 , 項目信息管理的項目管理工具.是Apache組織旗下的開源項目.它的核心功能是一個具有跨平臺特性的構建工具 , 幫助我們自動化構建 , 并提供一個完整的優(yōu)化的構建生命周期模型 , 和構建任務所需的基礎組件/插件.它還是一個依賴管理工具和項目信息管理工具 , 方便開發(fā)人員更好的管理依賴與避免項目信息混亂等問題.除此之外還提供了一套標準的約定規(guī)則 , 減輕不同項目的差異性.
二、Maven的作用
作用一:
個人理解maven主要是用來解決導入java類依賴的jar,編譯java項目主要問題。(最早手動導入jar,使用Ant之類的編譯java項目)
以pom.xml文件中dependency屬性管理依賴的jar包,而jar包包含class文件和一些必要的資源文件。
當然它可以構建項目,管理依賴,生成一些簡單的單元測試報告,像現(xiàn)在公司的持續(xù)集成都廣泛的使用maven,當你接觸一些項目以后你就會有更深的體會。
作用二:
比如之前項目導入jar。是通過copy方式導入項目中,而且還會存在jar之間的依賴和沖突。而maven解決了這些問題,只是網(wǎng)速不好的時候有點麻煩。只需要下載-bin.zip就可以了。
作用三:
jar 包管理,防止jar之間依賴起沖突 。小組之間建立個私服務,大家都用通用 的maven配置文件,不用自己手動去下載jar ,pom文件會自動管理下載好的jar包。
作用四:
Maven是基于項目對象模型,可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。Maven能夠很方便的幫你管理項目報告,生成站點,管理jar文件,等等。例如:項目開發(fā)中第三方jar引用的問題,開發(fā)過程中合作成員引用的jar版本可能不同,還有可能重復引用相同jar的不同版本,使用maven關聯(lián)jar就可以配置引用jar的版本,避免沖突。
三、Maven坐標系統(tǒng)
Maven構件 : 指的是平時項目打包完成后的的一些jar , war等文件.
Maven坐標為各種構件引入了秩序 , 任何一個構件都必須明確定義自己的唯一坐標 ; 而一組Maven坐標就是通過以下一組元素定義的 :
groupId : 定義當前Maven項目隸屬的實際項目
artifactId : 定義實際項目中的一個Maven模塊/項目 , 推薦使用groupId作為artifactId的前綴
version : 定義Maven模塊/項目所處的版本 , Maven定義了一套完整的版本規(guī)范
packaging : 定義Maven模塊/項目的打包方式
classifier : 幫助定義一些與主構件對應的附屬構件
Maven倉庫就是基于Maven的坐標系統(tǒng)
四、Maven倉庫
得益于Maven的坐標機制 , 任何Maven項目使用的任何一個"構件"的方式都是相同的 ; 在此基礎上 , Maven可以在某個位置統(tǒng)一儲存所有Maven項目共享的"構件" , 這就是倉庫 ; 因為倉庫 , 所以Maven項目不再需要各自儲存依賴的"構件" , 轉而只需聲明這些依賴的坐標 , 在需要的時候 , Maven會自動根據(jù)坐標找到倉庫中的"構件" , 并使用它們.
倉庫的分類有兩種 , 本地倉庫與遠程倉庫 ; 當Maven根據(jù)坐標尋找"構件"的時候 , Maven會先查看本地倉庫 , 如果本地倉庫存在此構件 , 則直接使用 ; 如果本地倉庫不存在此"構件" , 或需要查看是否有更新的版本 , Maven就會去遠程倉庫查找 , 當發(fā)現(xiàn)所需的"構件"后 , 就會下載到本地倉庫后再使用 ; 如果最終本地倉庫與遠程倉庫都無法找到所需要的"構件"時 , Maven就會報錯。
五、Maven構建概念及過程
(1)構建并不是創(chuàng)建,創(chuàng)建一個工程并不等于構建一個項目,那么我們就從如下三個方面來了解構建。
1.純Java代碼
Java是一門編譯型語言,.java擴展名的源文件需要編譯成.class擴展名的字節(jié)碼文件才能夠執(zhí)行。所以編寫任何Java代碼想要執(zhí)行的話就必須經(jīng)過編譯得到對應的.class文件。
2.Web工程
當我們需要通過瀏覽器訪問Java程序時就必須將包含Java程序的Web工程編譯的結果“拿”到服務器上的指定目錄下,并啟動服務器才行。這個“拿”的過程我們叫部署。
我們可以這樣理解,為編譯的WEB工程是米,而編譯好的WEB工程是飯,這個編譯過程就是生米煮成熟飯。
3.實際項目
在實際項目中整合第三方框架,Web工程中不僅包含了Java程序和JSP頁面、圖片等靜態(tài)資源之外,還包括了第三方框架的jar包以及各種各樣的配置文件。所有這些資源都必須按照正確的目錄結構部署到服務器上,項目才可以運行。
因此,構建就是以我們編寫的Java代碼、框架配置文件、國際化等其他資源文件、JSP頁面和圖片等靜態(tài)資源作為“原材料”,去“生產(chǎn)”出一個可以運行的項目的過程。
(2)構建環(huán)節(jié)
1.清理:刪除以前的編譯結果,為重新編譯做好準備。
2.編譯:將Java源程序編譯為字節(jié)碼文件。
3.測試:針對項目中的關鍵點進行測試,確保項目在迭代開發(fā)過程中關鍵點的正確性。
4.報告:在每一次測試后以標準的格式記錄和展示測試結果。
5.打包:將一個包含諸多文件的工程封裝為一個壓縮文件用于安裝或部署。Java工程對應jar包,Web工程對應war包。
6.安裝:在Maven環(huán)境下特指將打包的結果——jar包或war包安裝到本地倉庫中。
7.部署:將打包的結果部署到遠程倉庫或將war包部署到服務器上運行。
關于大數(shù)據(jù)開發(fā)-maven的基礎內容也就是如此了,這其中包含大量的細節(jié)知識,這種自動化工具是真的很方便,大大的節(jié)省了我們的時間,提高了效率。所以對它做一個具體的了解,大大的提高它的利用率。