maven中pom.xml中的scope讲解
一、compile:編譯范圍
compile是默認(rèn)的范圍;如果沒有提供一個(gè)范圍,編譯范圍依賴在所有的classpath 中可用,同時(shí)它們也會(huì)被打包。而且這些dependency會(huì)傳遞到依賴的項(xiàng)目中。
?
二、provided:已提供范圍
provided 明了dependency 由JDK或者容器提供。例如如果開發(fā)了一個(gè)web 應(yīng)用,可能在編譯 classpath 中需要可用的Servlet API 來編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR 中包含這個(gè)Servlet API;這Servlet API JAR 由你的應(yīng)用服務(wù)器或者servlet容器提供。已提供范圍的依賴在編譯classpath (不是運(yùn)行時(shí))可用。它們不是傳遞性的也不會(huì)被打包。
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
?
三、runtime:運(yùn)行時(shí)范圍
runtime 依賴在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。比如可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)。
?
四、test:測(cè)試范圍
test范圍依賴 在一般的編譯和運(yùn)行時(shí)都不需要,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
?
五、system:系統(tǒng)范圍
system范圍依賴與provided 類似,但是你必須顯式的提供一個(gè)對(duì)于本地系統(tǒng)中JAR 文件的路徑。這么做是為了允許基于本地對(duì)象編譯,而這些對(duì)象是系統(tǒng)類庫(kù)的一部分。這樣的構(gòu)件應(yīng)該是一直可用的,Maven 也不會(huì)在倉(cāng)庫(kù)中去尋找它。如果你將一個(gè)依賴范圍設(shè)置成系統(tǒng)范圍,你必須同時(shí)提供一個(gè) systemPath 元素。注意該范圍是不推薦使用的(你應(yīng)該一直盡量去從公共或定制的 Maven 倉(cāng)庫(kù)中引用依賴)。
轉(zhuǎn)載于:https://www.cnblogs.com/nanyangzp/p/4813228.html
總結(jié)
以上是生活随笔為你收集整理的maven中pom.xml中的scope讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis调用及使用
- 下一篇: px,em,rem,vw单位在网页和移动