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