maven的依賴范圍
依賴范圍是用來(lái)控制依賴與3種classpath(編譯classpath厨诸,測(cè)試classpath,運(yùn)行classpath)的關(guān)系蜗帜。maven有以下幾種依賴范圍:
Compile:
編譯依賴范圍缴淋。默認(rèn)使用此依賴范圍,其下的maven依賴响巢,對(duì)于編譯描滔,測(cè)試,運(yùn)行classpath都有效踪古。
Test:
測(cè)試依賴范圍含长。只對(duì)測(cè)試classpath有效,編譯主代碼或運(yùn)行項(xiàng)目時(shí)無(wú)法使用此依賴伏穆。典型例子如junit拘泞。
Provided:
已提供依賴范圍。其對(duì)于編譯與測(cè)試classpath有效枕扫,運(yùn)行時(shí)無(wú)效陪腌。如在web開發(fā)時(shí),只有在編譯和測(cè)試時(shí)才用到servlet-api烟瞧,將其設(shè)置為此范圍诗鸭,在運(yùn)行時(shí)servlet-api由web容器提供,無(wú)須依賴参滴。并且在打war包時(shí)强岸,此范圍的依賴不會(huì)打在WEB-INF/lib下。
Runtime:
運(yùn)行時(shí)依賴范圍卵洗。與provided相對(duì)请唱,運(yùn)行時(shí)classpath有效弥咪。典型例子如jdbc。
System:
系統(tǒng)依賴范圍十绑。其和三種classpath的關(guān)系聚至,與provided一樣。但是使用此依賴范圍必須通過(guò)SystemPath元素顯示地指定依賴文件的路徑本橙。由于與本機(jī)系統(tǒng)綁定扳躬,移植性差。如:
<dependency>
<groupId>tools</groupId>
<artifactid>tools</artifactId>
<version>1.6.30</version>
<scope>System</scope>
<systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>