Maven依賴圖解
阿新 • • 發佈:2017-06-12
commons order clas mave adding str 平時 test tab
傳遞性依賴和依賴範圍
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依賴圖解