scope=compile:
這是依賴作用域的默認值,表示程序的編譯,測試,部署運行我們的程序都需要依賴這個jar包。說白了就是再依賴中添加這個之後,你的程序會一直使用當前的這個依賴
scope=provided:
表示的是當程序只在編譯和測試階段,程序依賴當前這個jar包。在運行階段,程序就會去找程序所在容器中的這個jar包(比如你在maven中添加了servlet-api.jar這個依賴,部署的時候將程序部署在了tomcat中,那麼在編譯和測試階段程序使用的就是maven中依賴的servlet-api.jar 當程序部署在tomcat中之後,程序使用的就是tomcat中的servlet-api.jar)
明白依賴作用域的問題,可能也就明白爲什麼有時候maven中明明依賴了的jar包,在上線之後爲什麼會出現找不到加載類的問題。也可解決部分jar包衝突問題(下面試作用域取值)
1、compile(默認值):在編譯、運行、測試、打包都有效;
2、provided:編譯、測試時有效,運行、打包無效;
3、test:僅在測試時有效;
4、runtime:測試、運行、打包時有效;
5、system:不推薦使用,使用system作用域不會去本地倉庫尋找依賴,要指定本地路徑;