问题背景
这是一个夜黑风高的晚上。。。。废话少说。
很正常的在idea2019.3版本中建了个Maven项目,完了之后在之前项目中把公用的一些依赖给拷贝过来。
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 阿里巴巴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
拷贝后发现依赖报红,idea也没显示解析pom,紧接着reimport一下,继续报红提示dependency not found 。
马上就想到是不是jar下载失败缓存问题。跑去本地仓库准备删除发现报红的依赖对应的版本根本不在本地仓库中。
于是我怀疑是我的Maven配置远程仓库是不是没有这个依赖,跑过去一搜发现仓库中有。这就很诡异了。绞尽脑汁想了好久,各种怀疑人生。
经过3小时的各种排查。。。。。。
问题解决
怎么都不会想到,在dependencyManagement中写依赖,既然不会去远程仓库拉去jar包。只会在本地仓库找,本地仓库没有就不去远程仓库拉取了。巨坑!也不知道是不是idea这个版本的bug。
最终解决方案是之前把本地仓库没有的依赖先写到dependencies中让它去远程仓库拉到本地仓库,然后再剪切Maven坐标到dependencyManagement中就正常了。。。。