咱們經過引用spring-boot-starter-parent,添加spring-boot-starter-webweb
能夠實現web項目的功能,固然不使用spring-boot-start-web,經過本身添加的依賴包也能夠實現,可是須要一個個添加,費時費力,並且可能產生版本依賴衝突。咱們來看下springboot的依賴配置:spring
利用pom的繼承,一處聲明,到處使用。在最頂級的spring-boot-dependencies中,使用dependencyManagement讓全部子項目引用一個依賴而不用顯式的列出版本號,將結構信息,部署信息,共同的依賴信息放置在統一的位置。dependencyManagement只聲明依賴,並不真正引入,所以子項目須要經過dependencies引入相關依賴。springboot
1)spring-boot-dependencies組成:app
第三方依賴的版本號
插件的版本號
springboot的依賴包,固定版本的parent依賴固定版本包,若是升級只需修改parent的版本號,便可統一更換依賴。
\maven
第三方依賴,解決了第三方依賴版本不兼容的衝突,使用第三方依賴更加便捷
插件
2)spring-boot-parent組成:spring-boot
添加額外的依賴,用戶會使用的第三方依賴,可是spring-boot-dependencies中沒有依賴
測試相關的依賴
以及其餘插件及profile配置測試
3)spring-boot-starter-parent組成:spa
父級spring-boot-dependencies無需多說插件
依賴spring-core3d
在src/main/resources目錄下,僅application.yml和application.properties是資源文件並須要進行過濾;在src/main/resources下除application.yml和application.properties外也是資源文件,但不須要過濾。過濾會將文件中${...}替換爲系統屬性或者項目屬性值。
4)sprint-boot-starter-*
能夠經過parent來統一管理,這也就是springboot的四大神器之一的starter所帶來的便捷。根據不一樣的功能,添加不一樣的starter便可。在springboot源碼包中咱們能夠看到spring-boot-starters中有50多個starter
圖中根目錄pom.xml爲spring-boot-starters,使用maven的聚合模塊,其餘starter做爲聚合模塊的子目錄存在,目的是一次構建多個項目模塊,以下圖:
經過models來管理全部的starter,能夠一次性構建全部starter:
使用assembly插件,將一組文件、目錄、依賴元素組裝成一個歸檔文件,以下圖:
使用該插件,executions執行器會執行mvn assembly:assembly,只運行一次,描述文件的路徑爲src/main/assembly/starter-poms-assembly.xml,咱們來看下描述文件:
打包的文件格式爲zip,模塊文件爲**/pom.xml,該插件執行完效果以下:
會在src同級目錄下生成target文件夾並在其下生成:
zip文件中全部子starter文件的依賴
在源碼根目錄中與spring-boot-starters同級的目錄中,spring-boot-deployment-tests,spring-boot-integration-tests,spring-boot-samples都使用了pom的聚合模塊功能。包括spring-boot-1.5.1.RELEASE整個項目也是使用聚合模塊功能。可使用mvnw對項目進行統一構建。
結:
spring-boot的maven配置大概如上所述,使用到了
a.pom繼承:一處聲明,到處使用
b.pom聚合:一次構建多個項目模塊
c.其餘插件,各類配置
能讓咱們在對spring-boot實現有認識的同時,加深對maven配置的理解。
結束語:JAVA是世界上最美的語言,沒有之一; 抽絲剝繭般撥開你神祕的面紗!