Maven中scope依赖范围和依赖的传递性
Maven中使用?scope?來(lái)指定當(dāng)前包的依賴范圍和依賴的傳遞性。常見的可選值有:compile,?provided,?runtime,?test,?system?等。scope?主要是用在?pom.xml?文件中的依賴定義部分
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version><scope>provided</scope></dependency>compile?:為默認(rèn)的依賴有效范圍。如果在定義依賴關(guān)系的時(shí)候,沒有明確指定依賴有效范圍的話,則默認(rèn)采用該依賴有效范圍。此種依賴,在編譯、運(yùn)行、測(cè)試時(shí)均有效。
provided?:在編譯、測(cè)試時(shí)有效,但是在運(yùn)行時(shí)無(wú)效。例如:servlet-api,jsp-api運(yùn)行項(xiàng)目時(shí),容器已經(jīng)提供,就不需要Maven重復(fù)地引入一遍了。
runtime?:在運(yùn)行、測(cè)試時(shí)有效,但是在編譯代碼時(shí)無(wú)效。例如:JDBC驅(qū)動(dòng)實(shí)現(xiàn),項(xiàng)目代碼編譯只需要JDK提供的JDBC接口,只有在測(cè)試或運(yùn)行項(xiàng)目時(shí)才需要實(shí)現(xiàn)上述接口的具體JDBC驅(qū)動(dòng)。
test?:只在測(cè)試時(shí)有效,例如:JUnit。
system?:在編譯、測(cè)試時(shí)有效,但是在運(yùn)行時(shí)無(wú)效。和provided的區(qū)別是,使用system范圍的依賴時(shí)必須通過systemPath元素顯式地指定依賴文件的路徑。由于此類依賴不是通過Maven倉(cāng)庫(kù)解析的,而且往往與本機(jī)系統(tǒng)綁定,可能造成構(gòu)建的不可移植,因此應(yīng)該謹(jǐn)慎使用。systemPath元素可以引用環(huán)境變量。
?
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的Maven中scope依赖范围和依赖的传递性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在${}中为甚么采用@Param及多参数
- 下一篇: 如何判断一个常量是废弃常量,一个类是无用