最近在Spring Boot 項目中引入依賴的時候注意到一個問題:引入的依賴不指定版本號,項目正常運行,如下方
這其中涉及到兩個方面的知識:
一,多級項目中maven子項目繼承了父項目pom.xml中dependencyManagement標簽下對應的依賴,dependencyManagement的作用其實相當於一個對所依賴jar包進行版本管理的管理器。
1、如果dependencies里的dependency自己沒有聲明version元素,那么maven就會到dependencyManagement里面去找有沒有對該jar進行過版本聲明,如果有,就繼承它,如果沒有就會報錯,告訴你必須為dependency聲明一個version
2、如果dependencies中的dependency聲明了version,那么無論dependencyManagement中有無對該jar的version聲明,都以dependency里的version為准
二、maven項目的父pom為spring-boot-starter-parent,而spring-boot-starter-parent的父pom是spring-boot-dependencies,該pom中dependencyManagement標簽中聲明了許多常見的依賴版本,如果自己的pom中沒有聲明,那么就默認用spring-boot-dependencies中聲明的pom版本
所以,在引入依賴的時候,即使你不指定依賴的版本,Spring Boot 也會通過Maven 的繼承關系,引入依賴的版本,從而完成版本的統一
注:
今天碰到一點點問題,總結就是:如果父pom中直接使用<dependencies>....</dependencies>的方式申明jar,子項目則可以直接使用該jar而不需要申明。