Maven依賴scope範圍詳解

獵手家園發表於2021-02-06

Maven的生命週期存在編譯、測試、執行這些過程,那麼顯然有些依賴只用於測試,比如junit;有些依賴編譯用不到,只有執行的時候才能用到,比如mysql的驅動包在編譯期就用不到(編譯期用的是JDBC介面),而是在執行時用到的;還有些依賴,編譯期要用到,而執行期不需要提供,因為有些容器已經提供了,比如servlet-api在tomcat中已經提供了,我們只需要的是編譯期提供而已。總結說來,在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。大致有compile、provided、runtime、test、system等幾個。

compile :預設的scope,執行期有效,需要打入包中
provided:編譯期有效,執行期不需要提供,不會打入包中
runtime :編譯不需要,在執行期有效,需要匯入包中。(介面與實現分離)
test        :測試需要,不會打入包中
system   :非本地倉庫引入、存在系統的某個路徑下的jar。(一般不使用)

相關文章