maven中Scope的作用
Dependency Scope
在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可以使用5個值:
* compile,預設值,適用於所有階段,會隨著專案一起釋出。
* provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
* runtime,只在執行時使用,如JDBC驅動,適用執行和測試階段。
* test,只在測試時使用,用於編譯和執行測試程式碼。不會隨專案釋出。
* system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查詢它。
依賴範圍控制哪些依賴在哪些classpath 中可用,哪些依賴包含在一個應用中。讓我們詳細看一下每一種範圍:
compile (編譯範圍)
compile是預設的範圍;如果沒有提供一個範圍,那該依賴的範圍就是編譯範圍。編譯範圍依賴在所有的classpath 中可用,
同時它們也會被打包。
provided (已提供範圍)
provided 依賴只有在當JDK 或者一個容器已提供該依賴之後才使用。例如, 如果你開發了一個web 應用,你可能在編譯
classpath 中需要可用的Servlet API 來編譯一個servlet,但是你不會想要在打包好的WAR 中包含這個Servlet API;這個
Servlet API JAR 由你的應用伺服器或者servlet 容器提供。已提供範圍的依賴在編譯classpath (不是執行時)可用。它們
不是傳遞性的,也不會被打包。
runtime (執行時範圍)
runtime 依賴在執行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只
有在執行的時候才需要JDBC
驅動實現。
test (測試範圍)
test範圍依賴 在一般的編譯和執行時都不需要,它們只有在測試編譯和測試執行階段可用。
system (系統範圍)
system範圍依賴與provided 類似,但是你必須顯式的提供一個對於本地系統中JAR 檔案的路徑。這麼做是為了允許基於本地
物件編譯,而這些物件是系統類庫的一部分。這樣的構件應該是一直可用的,Maven 也不會在倉庫中去尋找它。如果你將一個
依賴範圍設定成系統範圍,你必須同時提供一個 systemPath 元素。注意該範圍是不推薦使用的(你應該一直儘量去從公共或
定製的 Maven 倉庫中引用依賴)。
相關文章
- Maven中的dependency的scope作用域詳解Maven
- Maven依賴中的scope詳解Maven
- maven中的scope標籤類別詳解Maven
- maven中scope標籤以及exclusions 記錄Maven
- Maven中optional和scope元素的使用,你弄明白了?Maven
- Maven-POM中的各種scope的行為總結Maven
- Maven依賴scope範圍詳解Maven
- maven中profile元素的作用意義和用法Maven
- pytest:通過scope控制fixture的作用範圍
- Vue作用域插槽 :slot-scope 例項Vue
- alter system set ... scope=... 中的scope的含義是什麼?
- Maven是什麼? Maven的概念+作用+倉庫的介紹+常用命令Maven
- vue中style下scope的使用和坑Vue
- MAVEN中的profileMaven
- 作用域(scope), 定義空間(declaration space) 和 生存期(lifetime)
- 【Spring註解驅動開發】使用@Scope註解設定元件的作用域Spring元件
- ASP.NET Core 依賴注入中的ScopeASP.NET依賴注入
- IDEA中Maven的配置IdeaMaven
- 深入理解vue中的slot與slot-scopeVue
- 【CSS模組化之路2】webpack中的Local ScopeCSSWeb
- Spring:Bean的scope作用域案例講解以及Bean之間的依賴和繼承(3)SpringBean繼承
- 擒賊先擒王,簡單談一下JavaScript作用域鏈(Scope Chain)JavaScriptAI
- 《Spring》(六)---- Bean的scopeSpringBean
- Maven中GeoTools的引入及Maven中央倉庫地址大全Maven
- JavaScript:Scope(域)的基本指南JavaScript
- MASM中Group的作用ASM
- Vue中key的作用Vue
- JAVA中initCause()的作用Java
- C++中::的作用C++
- Tomcat中redirectPort的作用Tomcat
- keycloak~關於授權碼認證中的scope的實踐
- Spring預設的Bean的scopeSpringBean
- jenkins中maven的安裝及配置,如何在jenkins中建立maven任務。JenkinsMaven
- 終於搞懂Spring中Scope為Request和Session的Bean了SpringSessionBean
- Laravel scope用法Laravel
- idea中配置MavenIdeaMaven
- Mac 中 Maven 配置MacMaven
- 解決IDEA中maven中的module是灰色的IdeaMaven