Maven 是什么
Maven 是一款服務(wù)于 Java 平臺(tái)的自動(dòng)化構(gòu)建工具.
構(gòu)建: 構(gòu)建就是以 “Java源文件”, “框架配置文件”, “JSP” 等資源為 “原材料”, 去 “生產(chǎn)” 一個(gè)可以運(yùn)行的項(xiàng)目的過程.
構(gòu)建過程的各個(gè)環(huán)節(jié):
【1】清理:將以前編譯得到的舊的class字節(jié)碼文件刪除,為下一次編譯做準(zhǔn)備
【2】編譯:將Java源程序編程成class字節(jié)碼文件
【3】測試:自動(dòng)測試晌梨,自動(dòng)調(diào)用junit程序
【4】報(bào)告:測試程序執(zhí)行的結(jié)果
【5】打包:動(dòng)態(tài)Web工程打war包哼鬓,Java工程打jar包
【6】安裝:Maven特定的概念, 將打包得到的文件復(fù)制到 “倉庫” 中的指定位置
【7】部署:將動(dòng)態(tài)Web工程生成的war包復(fù)制到Servlet容器的指定目錄下,使其可以運(yùn)行
為什么使用 Maven
目前開發(fā)中存在的問題:
① 一個(gè)項(xiàng)目就是一個(gè)工程.
如果項(xiàng)目非常龐大, 就不適合繼續(xù)使用 package 來劃分模塊. 最好是每一個(gè)模塊對(duì)象一個(gè)工程, 利于分工協(xié)作.
② 項(xiàng)目中需要的 jar 包必須手動(dòng)復(fù)制到 lib目錄下.
同樣的 jar 包, 重復(fù)出現(xiàn)在不同的項(xiàng)目工程中, 浪費(fèi)內(nèi)存, 也讓工程比較臃腫.
③ 下載的 jar 包有可能是不規(guī)范的.
④ jar 包與 jar 包之間存在依賴關(guān)系. 你必須清楚他們之間的依賴關(guān)系, 增加了學(xué)習(xí)成本.
Maven 可以解決的問題
① 借助 Maven 可以把一個(gè)項(xiàng)目分割為多個(gè)工程.
② 借助 Maven 可以將 jar 包僅僅保存在 “倉庫” 中, 有需要的工程 “引用” 這個(gè)文件接口, 并不需要真的把 jar 包復(fù)制過來.
③ 借助 Maven 可以以一種規(guī)范的方式下載 jar 包. 所有知名的框架的 jar 包已經(jīng)按照統(tǒng)一的規(guī)范存放在了 Maven 的中央倉庫中.