全部課程
發(fā)布時(shí)間: 2018-08-16 01:00:36
?Maven基本概念
在不用Maven的時(shí)候,比如說(shuō)以前我們用Ant構(gòu)建項(xiàng)目,在項(xiàng)目目錄下,往往會(huì)看到一個(gè)名為/lib的子目錄,那里存放著各類第三方依賴jar文件,如log4j.jar,junit.jar等等。每建立一個(gè)項(xiàng)目,你都需要建立這樣的一個(gè)/lib目錄,然后復(fù)制一對(duì)jar文件,這是很明顯的重復(fù)。重復(fù)永遠(yuǎn)是噩夢(mèng)的起點(diǎn),多個(gè)項(xiàng)目不共用相同的jar文件,不僅會(huì)造成磁盤(pán)資源的浪費(fèi),也使得版本的一致性管理變得困難。此外,如果你使用版本管理工具,如github(你沒(méi)有使用版本管理工具?馬上試試SVN吧,它能幫你解決很多頭疼的問(wèn)題),你需要將大量的jar文件提交到代碼庫(kù)里,可是版本管理工具在處理二進(jìn)制文件方面并不出色。
Maven倉(cāng)庫(kù)就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven項(xiàng)目可以從同一個(gè)Maven倉(cāng)庫(kù)中獲取自己所需要的依賴JAR,這節(jié)省了磁盤(pán)資源。此外,由于Maven倉(cāng)庫(kù)中所有的JAR都有其自己的坐標(biāo),該坐標(biāo)告訴Maven它的組ID,構(gòu)件ID,版本,打包方式等等,因此Maven項(xiàng)目可以方便的進(jìn)行依賴版本管理。你也不在需要提交JAR文件到SCM倉(cāng)庫(kù)中,你可以建立一個(gè)組織層次的Maven倉(cāng)庫(kù),供所有成員使用。
簡(jiǎn)言之,Maven倉(cāng)庫(kù)能幫助我們管理構(gòu)件(主要是JAR)。
Maven是一個(gè)跨平臺(tái)的項(xiàng)目管理工具,它是基于項(xiàng)目對(duì)象模型(POM),主要用于基于java平臺(tái)的項(xiàng)目構(gòu)建,依賴管理,以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件項(xiàng)目管理工具。
項(xiàng)目構(gòu)建
? 項(xiàng)目構(gòu)建過(guò)程包括【清理項(xiàng)目】→【編譯項(xiàng)目】→【測(cè)試項(xiàng)目】→【生成測(cè)試報(bào)告】→【打包項(xiàng)目】→【部署項(xiàng)目】這幾個(gè)步驟,這六個(gè)步驟就是一個(gè)項(xiàng)目的完整構(gòu)建過(guò)程。? 理想的項(xiàng)目構(gòu)建是高度自動(dòng)化,跨平臺(tái),可重用的組件,標(biāo)準(zhǔn)化的,使用maven就可以幫我們完成上述所說(shuō)的項(xiàng)目構(gòu)建過(guò)程。?
依賴管理
?依賴指的是jar包之間的相互依賴,比如我們搭建一個(gè)Struts2的開(kāi)發(fā)框架時(shí),光光有struts2-core-2.3.16.3.jar這個(gè)jar包是不行的,struts2-core-2.3.16.3.jar還依賴其它的jar包,依賴管理指的就是使用Maven來(lái)管理項(xiàng)目中使用到的jar包,Maven管理的方式就是“自動(dòng)下載項(xiàng)目所需要的jar包,統(tǒng)一管理jar包之間的依賴關(guān)系”。?使用Maven的好處
?Maven中使用約定,約定java源代碼代碼必須放在哪個(gè)目錄下,編譯好的java代碼又必須放到哪個(gè)目錄下,這些目錄都有明確的約定。
Maven的每一個(gè)動(dòng)作都擁有一個(gè)生命周期,例如執(zhí)行 mvn install 就可以自動(dòng)執(zhí)行編譯,測(cè)試,打包等構(gòu)建過(guò)程
只需要定義一個(gè)pom.xml,然后把源碼放到默認(rèn)的目錄,Maven幫我們處理其他事情
使用Maven可以進(jìn)行項(xiàng)目高度自動(dòng)化構(gòu)建,依賴管理(這是使用Maven較大的好處),倉(cāng)庫(kù)管理。
為什么要使用maven
? 一個(gè)基本web項(xiàng)目是從視圖層(H5,CSS,Js等前端技術(shù))到控制層(SpringMVC,Struts2)到事務(wù)處理層(Spring IOC,AOP)再到持久層(SpringData,Hibernate,Mybatis)最后到數(shù)據(jù)庫(kù)(Mysql,Oracle,Mongodb等)。咦?。?!好像沒(méi)有Maven什么事?
但我們?cè)囅耄?br>
①如果給一個(gè)項(xiàng)目添加 jar 包,我們是不是手動(dòng)COPY到WEB-INF/lib目錄下的?
②如果 jar 包之間發(fā)生依賴問(wèn)題和版本沖突?
③如果項(xiàng)目多了,相同 jar 包占用的存儲(chǔ)空間會(huì)越來(lái)越大,我們是不是要犯強(qiáng)迫癥了?
怎么解決?
借助Maven,使其以一種規(guī)范的方式下載設(shè)置的jar包
Maven在下載jar包的同時(shí),還會(huì)自動(dòng)將被依賴的jar導(dǎo)入
可以設(shè)置一個(gè)Maven pom父項(xiàng)目來(lái)管理jar包,讓其他項(xiàng)目繼承它
當(dāng)項(xiàng)目越來(lái)越復(fù)雜,規(guī)模越來(lái)越大的時(shí)候,Maven的作用就會(huì)越來(lái)越明顯。
Maven是一款服務(wù)于Java平臺(tái)用的自動(dòng)化構(gòu)建工具,同時(shí)它也是用Java編寫(xiě)的。
Maven下載
下載地址:https://maven.apache.org
得到一個(gè)壓縮包,解壓,可以看到maven的組成目錄,maven路徑最好不要包括中文
Maven目錄分析
bin:含有mvn運(yùn)行的腳本
boot:含有plexus-classworlds類加載器框架
conf:含有settings.xml配置文件
lib:含有Maven運(yùn)行時(shí)所需要的java類庫(kù)
LICENSE.txt, NOTICE.txt,
README.txt針對(duì)Maven版本,第三方軟件等簡(jiǎn)要介紹
Maven安裝
1) 首先要確保電腦上已經(jīng)安裝了JDK(要jdk 1.6+的版本),配置好JDK的環(huán)境變量
2) 對(duì)下載的壓縮文件進(jìn)行解壓縮解壓到如下目錄(解壓目錄最好不要有中文)
3) 設(shè)置系統(tǒng)環(huán)境變量:MAVEN_HOME
?4) 設(shè)置環(huán)境變量Path,將%MAVEN_HOME%\bin加入Path中,一定要注意要用分號(hào);與其他值隔開(kāi),如下圖所示:
?%MAVEN_HOME%\bin代表的就是"D:\JavaUtilsIdea\Maven3.5\bin"目錄
?
5) 驗(yàn)證Maven安裝是否成功
打開(kāi)cmd窗口
輸入"mvn –v"命令 查看Maven的相關(guān)信息,如下圖所示: