1.compile:默認值 他表示被依賴項目須要參與當前項目的編譯,還有後續的測試,運行週期也參與其中,是一個比較強的依賴。打包的時候一般須要包含進去html
2.test:依賴項目僅僅參與測試相關的工做,包括測試代碼的編譯和執行,不會被打包,例如:junitapache
3.runtime:表示被依賴項目無需參與項目的編譯,不事後期的測試和運行週期須要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段maven
4.provided:打包的時候能夠不用包進去,別的設施會提供。事實上該依賴理論上能夠參與編譯,測試,運行等週期。至關於compile,可是打包階段作了exclude操做ide
5.system:從參與度來講,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。須要添加systemPath的屬性來定義路徑測試
A依賴B,B依賴C。當前項目爲A,只當B在A項目中的scope,那麼c在A中的scope是如何得知呢?ui
當C是test或者provided時,C直接被丟棄,A不依賴C;(排除傳遞依賴)spa
不然A依賴C,C的scope繼承與B的scopexml
exclusions主要用於排除依賴htm
固然,對於多重依賴,配置也很簡單,參考以下示例:繼承
一、maven官網:http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html