名詞解釋:
BOM(bill of materials):材料清單,用于解決jar包依賴的好方法。
Spring IO Platform
緣起:Spring起初只專注ioc和aop,現在已發展成一個龐大體系。比如security、mvc等。如此一來,不同模塊或者與外部進行集成時,依賴處理就需要各自對應版本號。比如,較新spring與較老的quartz,它們集成就會遇到問題,給搭建和升級帶來不便。因此Spring IO Platform應運而生,只要項目中引入了它,外部集成時依賴關系無需版本號。官網的原文如下:“when you do declare a dependency on something that's part of the Platform, you will now be able to omit the version number.”
舉例如下:
1
|
< code class = "hljs xml has-numbering" style = "display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;" >< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencies</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span >org.springframework< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencies</ span >></ span ></ code >< ul class = "pre-numbering" style = "box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);" >< li style = "box-sizing: border-box; padding: 0px 5px;" >1</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >2</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >3</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >4</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >5</ li ></ ul > |
Spring IO Platform只是一個pom文件,記錄了spring與其他開源項目對應的版本。省去了版本號,也就省去了處理依賴時的問題,因為Spring IO Platform中有最優的版本配置。
Spring相關的BOM
當然SpringSource為了解決這些Jar沖突,推出了各種BOM,當然最著名的就是spring platform io bom,其中最核心的三個是:spring-framework-bom、spring-boot-dependencies、platform-bom。
對于Spring工程來說,直接在pom.xml文件中添加如下配置代碼,即可免去管理版本沖突的難題。
1
|
< code class = "hljs xml has-numbering" style = "display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;" >< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencyManagement</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencies</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span >org.springframework< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span >spring-framework-bom< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span >4.2.0.RELEASE< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span >pom< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span >import< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span >org.springframework.boot< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span >spring-boot-dependencies< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span >1.3.0.M2< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span >pom< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span >import< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span >io.spring.platform< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >groupId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span >platform-bom< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >artifactId</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span >1.1.3.RELEASE< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >version</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span >pom< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >type</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span >import< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >scope</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependency</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencies</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >dependencyManagement</ span >></ span ></ code >< ul class = "pre-numbering" style = "box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);" >< li style = "box-sizing: border-box; padding: 0px 5px;" >1</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >2</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >3</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >4</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >5</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >6</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >7</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >8</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >9</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >10</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >11</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >12</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >13</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >14</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >15</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >16</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >17</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >18</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >19</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >20</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >21</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >22</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >23</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >24</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >25</ li ></ ul > |
參考文章
Introduction to spring io platform
總結
以上就是本文關于淺談Spring解決jar包依賴的bom的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/u010535345/article/details/50698779