傳遞性依賴和依賴範圍
Maven的依賴是具有傳遞性的,例如A->B,B->C,那麼A間接的依賴於C ,這就是依賴的傳遞性,其中A對於B是第一直接依賴,B對於C是第二直接依賴,C為A的傳遞性依賴。
在平時的開發中,如果我們的專案依賴了spring-core,依賴範圍是compile,spring-core又依賴了commons-logging,依賴範圍也是compile,那麼我們的專案對於commons-logging這一傳遞性依賴的範圍也就是compile。第一直接依賴的範圍和第二直接依賴的範圍決定了傳遞性依賴的範圍。我們透過下面這個表格來說明,其中最左邊一欄是第一直接依賴,最上面那一欄為第二直接依賴。中間交叉的是傳遞性依賴範圍。
|
#Compile |
Test | Provided |
Runtime |
#Compile |
|
|
|
|
|
|
|
|
|
|
|
|
|
Compile
|
|
Runtime |
|
Test
|
Test
|
#
## #######Test##################Provided############Provided################################################################################################################################################################################################################################################' ## ############Provided#############Provided##################Runtime### #########Runtime############ ############# ###########Runtime### ###############例如:第一個直接依賴範圍是Test,第二直接依賴範圍是Compile,那麼傳遞性依賴的範圍就是Test,大家可以根據這個表去判斷。 ######仔細觀察表格,我們可以發現這樣的規律:############當第二直接依賴的範圍是compile的時候,傳遞性依賴的範圍與第一直接依賴的範圍一致;############當第二直接依賴的範圍是test的時候,依賴不會得以傳遞;############當第二直接依賴的範圍是provided的時候,只傳遞第一直接依賴的範圍也為provided的依賴,且傳遞性依賴的範圍同樣為provided;############當第二直接依賴的範圍是runtime的時候,傳遞性依賴的範圍與第一個直接依賴的範圍一致,但compile例外,此時傳遞性依賴的範圍為runtime。 ##########
以上是Maven依賴圖解實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!