在父pom文件看到有这样的
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- SpringCloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Apollo --> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>${apollo-client.version}</version> </dependency> </dependencies> </dependencyManagement>
一开始不是很清楚为什么不把上面的依赖也放进dependencyManagement里面。后面看了一下,原来在父POM文件的直接引入的包,是子工程全都直接强制性依赖的。所以子依赖的版本管控就没那么灵活。
如果放进dependencyManagement里面,子工程引依赖的时候,如果写了版本号,就以子工程的版本为准,如果不写版本号就以父工程的为准,如果不引进来就不会强制性依赖。
主要是用来解决子工程和子工程直接可能存在包冲突或者版本冲突