scope 是用來限制 dependency 的作用范圍的,影響 maven 項目在各個生命周期時導入的 package 的狀態,主要管理依賴的部署。
scope 的作用范圍:
(1)compile:默認值,適用於所有階段(表明該 jar 包在編譯、運行以及測試中路徑均可見),並且會隨着項目一起發布。
(2)test:只在測試時使用,用於編譯和運行測試代碼,不會隨項目發布。
(3)runtime:無需參與項目的編譯,不過后期的測試和運行周期需要其參與,與 compile 相比,跳過了編譯。如 JDBC 驅動,適用運行和測試階段。
(4)provided:編譯和測試時有效,但是該依賴在運行時由服務器提供,並且打包時也不會被包含進去。如 servlet-api。
(5)system:類似 provided,需要顯式提供包含依賴的jar,不會從 maven 倉庫下載,而是從本地文件系統獲取,需要添加 systemPath 的屬性來定義路徑。