今天是劉小愛(ài)自學(xué)Java的第99天。
感謝你的觀看,謝謝你。
話不多說(shuō),開(kāi)始今天的學(xué)習(xí):
昨天下載并配置了Maven,今天就實(shí)際操作下。
Maven的一個(gè)核心作用就是管理項(xiàng)目的依賴(lài),這個(gè)依賴(lài)就可以理解成jar包。
有了它就不用再去網(wǎng)上一個(gè)一個(gè)找jar包了,直接添加jar包的坐標(biāo)就好。
那么其具體如何導(dǎo)入呢?
一、依賴(lài)管理
在maven工程中,有一個(gè)核心配置文件pom.xml,在該配置文件中即可以引入依賴(lài)。
1本地倉(cāng)庫(kù)引入
<dependencies>標(biāo)簽就好比以前的lib包,<dependencie>標(biāo)簽也就對(duì)應(yīng)著jar包。
其中關(guān)于標(biāo)簽名:
- groupId:定義當(dāng)前項(xiàng)目(jar包)隸屬的實(shí)際項(xiàng)目組。
- artifactId:定義當(dāng)前項(xiàng)目(jar包)的名稱(chēng)。
- version:定義當(dāng)前項(xiàng)目(jar包)的版本號(hào)。
正是因?yàn)橛辛藇ersion這個(gè)標(biāo)簽的存在,通過(guò)該標(biāo)簽統(tǒng)一版本起來(lái)也方便了很多。
因?yàn)檫@兩種依賴(lài)很常見(jiàn),我本地倉(cāng)庫(kù)中已經(jīng)有了,所以導(dǎo)入依賴(lài)時(shí)根據(jù)提示就可以導(dǎo)入。
此外在開(kāi)發(fā)工具中也可以直接搜索依賴(lài):
使用快捷鍵:Alt Insert,可以搜索對(duì)應(yīng)的依賴(lài),點(diǎn)擊即可以引入依賴(lài)。
不過(guò)上述這兩種情況,都是本地倉(cāng)庫(kù)中存在對(duì)應(yīng)的依賴(lài)才能夠被搜索到。
如果本地倉(cāng)庫(kù)沒(méi)有,就需要使用到私服了。
2私服引入
昨天在配置文件夾中就配置過(guò)對(duì)應(yīng)的私服。
使用的是阿里云私服,將其路徑復(fù)制下來(lái)訪問(wèn),可以訪問(wèn)到如下界面:
通過(guò)文件搜索功能可以搜索到需要的依賴(lài),比如我這邊搜索的是druid。
找到對(duì)應(yīng)的jar包點(diǎn)擊,可以下載對(duì)應(yīng)的jar包,但是如果是使用maven,不用下載。
將依賴(lài)復(fù)制后在項(xiàng)目中引入即可。
在引入依賴(lài)后開(kāi)發(fā)工具右下角會(huì)出現(xiàn)如下提示:
點(diǎn)擊import Changes就完成依賴(lài)的引入了。
同時(shí)也會(huì)將該依賴(lài)下載到本地倉(cāng)庫(kù)中。
二、依賴(lài)配置
在引入需要使用的依賴(lài)后,有時(shí)候不能直接就使用當(dāng)前的依賴(lài),需要對(duì)這些依賴(lài)進(jìn)行配置。
1依賴(lài)范圍設(shè)置
maven的運(yùn)行環(huán)境有三種:編譯classpath,測(cè)試classpath,運(yùn)行classpath。
而依賴(lài)范圍設(shè)置就是用來(lái)控制依賴(lài)與這三種classpath之間的關(guān)系的。
其中依賴(lài)范圍都是在標(biāo)簽<scope>中配置:
①編譯依賴(lài)范圍compile
如果沒(méi)有指定,默認(rèn)就是這種依賴(lài)范圍。
使用此依賴(lài)范圍的Maven依賴(lài),對(duì)于編譯、測(cè)試、運(yùn)行三種classpath都有效。
典型的例子就是jdbcTemplate,它在編譯、測(cè)試和運(yùn)行代碼時(shí)都需要。
②測(cè)試依賴(lài)范圍test
使用此依賴(lài)范圍的Maven依賴(lài),只對(duì)測(cè)試classpath有效。
在編譯和運(yùn)行項(xiàng)目期間都不需要使用此依賴(lài)。
典型的例子就是Junit,它只在測(cè)試代碼時(shí)有效。
③已提供依賴(lài)范圍:provided
使用此依賴(lài)范圍的maven依賴(lài)在編譯和測(cè)試classpath有效,但運(yùn)行時(shí)無(wú)效。
典型的例子就是servlet-api。
編譯和測(cè)試的時(shí)候需要使用servlet-api中的方法,但是使用tomcat運(yùn)行項(xiàng)目的時(shí)候不需要。
我們查看下Tomcat的文件路徑,會(huì)發(fā)現(xiàn)其本身就自帶了該jar包。
所以Tomcat在運(yùn)行期間會(huì)自動(dòng)提供這個(gè)依賴(lài)。
如果我們引入的該依賴(lài)在運(yùn)行時(shí)也有效,一旦和Tomcat自帶的版本不一樣,就會(huì)出現(xiàn)沖突。
④運(yùn)行時(shí)依賴(lài)范圍:runtime
使用此依賴(lài)范圍的maven依賴(lài)對(duì)于測(cè)試和運(yùn)行classpath有效,但在編譯時(shí)無(wú)效。
典型的例子是JDBC驅(qū)動(dòng)實(shí)現(xiàn)。
項(xiàng)目中只有在執(zhí)行測(cè)試或者運(yùn)行項(xiàng)目的時(shí)候才需要該依賴(lài)。
⑤系統(tǒng)依賴(lài)范圍:system
該依賴(lài)和provided依賴(lài)范圍完全一致。
但是此依賴(lài)不是來(lái)自Maven的中央倉(cāng)庫(kù)。
使用system范圍的依賴(lài)時(shí)必須通過(guò)<systemPath>標(biāo)簽指定依賴(lài)文件的路徑。
典型的例子是Oracle的驅(qū)動(dòng)包。
該依賴(lài)從中央倉(cāng)庫(kù)無(wú)法下載,需要先將Oracle的驅(qū)動(dòng)包下載到本地,再通過(guò)本地路徑引入。
該依賴(lài)范圍了解即可,使用不常見(jiàn)。
注意:
上述編譯都是指對(duì)項(xiàng)目主代碼的編譯,不包含對(duì)于測(cè)試代碼的編譯。
2依賴(lài)版本維護(hù)
事實(shí)上,在一個(gè)項(xiàng)目中,需要引入的依賴(lài)是很多的,可能有幾十個(gè)。
而各個(gè)依賴(lài)又有不同的版本,為了統(tǒng)一維護(hù)版本,可以專(zhuān)門(mén)將依賴(lài)的版本抽取出來(lái)統(tǒng)一管理:
在<properties>標(biāo)簽中放入各個(gè)依賴(lài)的版本號(hào)。
版本標(biāo)簽命名格式為依賴(lài)名.version。
在對(duì)應(yīng)的依賴(lài)<version>中使用${}引入前面定義好的版本即可。
最后
謝謝你的觀看。
如果可以的話,麻煩幫忙點(diǎn)個(gè)贊,謝謝你。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。