1. 程式人生 > >pom文件中scope標簽基本解釋

pom文件中scope標簽基本解釋

maven vax jsp 包含 image font 想要 api end

scope的分類

參考:https://www.cnblogs.com/nanyangzp/p/4813228.html

一、compile:編譯範圍
compile是默認的範圍;如果沒有提供一個範圍,編譯範圍依賴在所有的classpath 中可用,同時它們也會被打包。而且這些dependency會傳遞到依賴的項目中。

二、provided:已提供範圍
provided 明了dependency 由JDK或者容器提供。例如如果開發了一個web 應用,可能在編譯 classpath 中需要可用的Servlet API 來編譯一個servlet,但是你不會想要在打包好的WAR 中包含這個Servlet API;這Servlet API JAR 由你的應用服務器或者servlet容器提供。已提供範圍的依賴在編譯classpath (不是運行時)可用。它們不是傳遞性的也不會被打包。


<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>

三、runtime:運行時範圍
runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC驅動實現。

四、test:測試範圍
test範圍依賴 在一般的編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

五、system:系統範圍
system範圍依賴與provided 類似,但是你必須顯式的提供一個對於本地系統中JAR 文件的路徑。這麽做是為了允許基於本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven 也不會在倉庫中去尋找它。如果你將一個依賴範圍設置成系統範圍,你必須同時提供一個 systemPath 元素。註意該範圍是不推薦使用的(你應該一直盡量去從公共或定制的 Maven 倉庫中引用依賴)。

技術分享圖片

pom文件中scope標簽基本解釋