Maven依赖图解
傳遞性依賴和依賴范圍
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。
轉載于:https://www.cnblogs.com/tzpknight/p/6986715.html
總結
- 上一篇: 【从0到1学Web前端】javascri
- 下一篇: npm包实现发布正式和测试版