2020-08-03
Java培訓(xùn) maven
好程序員Java培訓(xùn)分享maven-概述一、為什么要使用Maven,在沒有Maven之前我們的開發(fā)存在的問題
項(xiàng)目如果需要引入第三方的開源庫就必須去官方網(wǎng)站或別的途徑去下載jar包,然后將下載襲來的jar包必須手動(dòng)復(fù)制,粘貼到WEB-INF/lib目錄下,當(dāng)某些jar包有依賴的時(shí)候,還要去下載對(duì)應(yīng)的依賴jar包,如果不小心漏掉了,程序運(yùn)行直接出錯(cuò)
jar包去哪里下?
要對(duì)jar包升級(jí)怎么辦?
jar包依賴沖突了怎么辦?
然后項(xiàng)目寫完之后,我們需要對(duì)項(xiàng)目進(jìn)行編譯,測(cè)試,打包,部署等一系列工作,操作起來都不是特別的簡潔,所以這個(gè)時(shí)候Maven就出現(xiàn)了
二、什么是Maven
Maven是一個(gè)采用純Java編寫的開源項(xiàng)目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來管理項(xiàng)目,所有的項(xiàng)目配置信息都被定義在一個(gè)叫做POM.xml的文件中
POM怎么理解?
我們使用Java是面向?qū)ο缶幊蹋瑢?duì)象就是我們的類
而Maven是面向項(xiàng)目,把我們的項(xiàng)目看做成是一個(gè)對(duì)象來進(jìn)行管理
是一個(gè)跨平臺(tái)的項(xiàng)目管理工具,主要服務(wù)于Java平臺(tái)的項(xiàng)目構(gòu)建、依賴管理和項(xiàng)目信息管理。
項(xiàng)目構(gòu)建:通過插件幫你完成項(xiàng)目的清理、編譯、測(cè)試、打包、部署。比如之前除了編寫源代碼,我們每天有相當(dāng)一部分時(shí)間花在了編譯、運(yùn)行單元測(cè)試、生成文檔、打包和部署等繁瑣而又不得不做的工作上
依賴管理:通過坐標(biāo)從maven倉庫導(dǎo)入java類庫(jar文件)。比如之前項(xiàng)目導(dǎo)入jar。是通過copy方式導(dǎo)入項(xiàng)目中,而且還會(huì)存在jar之間的依賴和沖突。而maven解決了這些問題,幫我們下載Jar包
倉庫管理:提供統(tǒng)一管理所有 Jar 包的工具;
項(xiàng)目信息管理:項(xiàng)目描述、開發(fā)者列表、版本控制系統(tǒng)地址等。比如發(fā)布版本之后我們可能還要對(duì)版本進(jìn)行升級(jí)
三、其它流行的構(gòu)建工具(了解)
在Java的世界里,目前在被使用的常用構(gòu)建工具有三個(gè):Ant,Maven,Gradle。
Ant的核心是由Java編寫,采用XML作為構(gòu)建腳本,這樣就允許你在任何環(huán)境下,運(yùn)行構(gòu)建。Ant基于任務(wù)鏈思想,任務(wù)之間定義依賴,形成先后順序。缺點(diǎn)是使用XML定義構(gòu)建腳本,導(dǎo)致腳本臃腫,Ant自身沒有為項(xiàng)目構(gòu)建提供指導(dǎo),導(dǎo)致每個(gè)build腳本都不一樣,開發(fā)人員對(duì)于每個(gè)項(xiàng)目都需要去熟悉腳本內(nèi)容,沒有提供在Ant生態(tài)環(huán)境內(nèi)的依賴管理工具。
Maven團(tuán)隊(duì)意識(shí)到Ant的缺陷,采用標(biāo)準(zhǔn)的項(xiàng)目布局,和統(tǒng)一的生命周期,采用約定由于配置的思想,減少構(gòu)建腳本需要的編寫內(nèi)容,活躍的社區(qū),可以方便找到合適的插件,強(qiáng)大的依賴管理工具。缺點(diǎn)是采用默認(rèn)的結(jié)構(gòu)和生命周期,太過限制,編寫插件擴(kuò)展麻煩,XML作為構(gòu)建腳本。
而Gradle同時(shí)擁有Ant和Maven的優(yōu)點(diǎn),它是基于Groovy的DSL,提供聲明式的構(gòu)建語言,采用標(biāo)準(zhǔn)的項(xiàng)目布局,但擁有完全的可配置性,就是可以改,通過插件,提供默認(rèn)的構(gòu)建生命周期,也可以自己定義任務(wù),單獨(dú)運(yùn)行任務(wù),定義任務(wù)間的依賴,強(qiáng)大的依賴管理工具,與Maven和Ivy倉庫結(jié)合,與Ant天生兼容,有效的重用Ant的任務(wù),多種實(shí)現(xiàn)插件的方式,強(qiáng)大的官方插件庫,從構(gòu)建級(jí)別,支持從Ant或者M(jìn)aven的逐步遷移,通過包裝器,無縫的在各個(gè)平臺(tái)運(yùn)行。
如何識(shí)別項(xiàng)目構(gòu)建工具,一般來說,一個(gè)項(xiàng)目的根目錄中就會(huì)包含構(gòu)建工具的配置文件信息,也表明了該項(xiàng)目使用的構(gòu)建工具,通常有如下的對(duì)應(yīng)關(guān)系
build.xml - 該項(xiàng)目使用Ant構(gòu)建
pom.xml - 該項(xiàng)目使用Maven構(gòu)建
build.gradle - 該項(xiàng)目使用Gradle構(gòu)建
開班時(shí)間:2021-04-12(深圳)
開班盛況開班時(shí)間:2021-05-17(北京)
開班盛況開班時(shí)間:2021-03-22(杭州)
開班盛況開班時(shí)間:2021-04-26(北京)
開班盛況開班時(shí)間:2021-05-10(北京)
開班盛況開班時(shí)間:2021-02-22(北京)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2020-09-21(上海)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)