maven scope含义的说明
依賴(lài)范圍控制哪些依賴(lài)在哪些classpath?中可用,哪些依賴(lài)包含在一個(gè)應(yīng)用中。讓我們?cè)敿?xì)看一下每一種范圍:
compile?(編譯范圍)
compile是默認(rèn)的范圍;如果沒(méi)有提供一個(gè)范圍,那該依賴(lài)的范圍就是編譯范圍。編譯范圍依賴(lài)在所有的classpath?中可用,同時(shí)它們也會(huì)被打包。
provided?(已提供范圍)
provided?依賴(lài)只有在當(dāng)JDK?或者一個(gè)容器已提供該依賴(lài)之后才使用。例如,?如果你開(kāi)發(fā)了一個(gè)web?應(yīng)用,你可能在編譯?classpath?中需要可用的Servlet API?來(lái)編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR?中包含這個(gè)Servlet API;這個(gè)Servlet API JAR?由你的應(yīng)用服務(wù)器或者servlet?容器提供。已提供范圍的依賴(lài)在編譯classpath?(不是運(yùn)行時(shí))可用。它們不是傳遞性的,也不會(huì)被打包。
runtime?(運(yùn)行時(shí)范圍)
runtime?依賴(lài)在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。比如,你可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)。
test?(測(cè)試范圍)
test范圍依賴(lài)?在一般的編譯和運(yùn)行時(shí)都不需要,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用。
system?(系統(tǒng)范圍)
system范圍依賴(lài)與provided?類(lèi)似,但是你必須顯式的提供一個(gè)對(duì)于本地系統(tǒng)中JAR?文件的路徑。這么做是為了允許基于本地對(duì)象編譯,而這些對(duì)象是系統(tǒng)類(lèi)庫(kù)的一部分。這樣的構(gòu)件應(yīng)該是一直可用的,Maven?也不會(huì)在倉(cāng)庫(kù)中去尋找它。如果你將一個(gè)依賴(lài)范圍設(shè)置成系統(tǒng)范圍,你必須同時(shí)提供一個(gè)?systemPath?元素。注意該范圍是不推薦使用的(你應(yīng)該一直盡量去從公共或定制的?Maven?倉(cāng)庫(kù)中引用依賴(lài))。
總結(jié)
以上是生活随笔為你收集整理的maven scope含义的说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Maven依赖中的scope详解
- 下一篇: @ResponseBody,@Reque