基础环境
IntelliJ IDEA Community Edition 2020.1.3
Springboot 2.3.1
jdk 1.8
gradle 6.5
本地maven仓库地址:D:/maven
起因
项目准备引用gradle来管理包依赖,使用maven项目转成gradle后,为了使用已存在的maven-bom来管理依赖包版本,所以需要将maven-pom(以下称parent-bom)进行发布到本地仓库测试,发布后使用gradle引用parent-bom 进行bulid的时候发现找不到该文件
问题描述
使用maven本地仓库做测试,将maven-bom install到本地仓库中,并未发布到私服(发布到私服,地址和配置一致应该不会有问题)
reimport包的时候,所有依赖的包都下载到了 本地仓库D:/maven,但是install parent-bom的时候发现发布到的本地目录为:C:\Users\xxxx.m2\repository。gradle bulid的时候找的还是D:/maven目录自然无法找到install到本地的parent-bom
问题分析
参考:https://stackoverflow.com/questions/32107205/gradle-does-not-use-the-maven-local-repository-for-a-new-dependency
网上查询问题及资料,发现gradle读取setting文件的顺序是:USER_HOME/.m2 >M2_HOME/config > USER_HOME/.m2/repository ;
- 查看USER_HOME/.m2 目录,发现无setting.xml
- 查看M2_HOME/config 发现有setting.xml文件,但是没做任何配置
- 查看USER_HOME/.m2/repository ,发现无setting.xml
setting.xml 没有配置本地仓库地址,则默认仓库地址为 USER_HOME/.m2/repository
问题处理
问题已经定位,那我们只要设置setting.xml的本地仓库就可以了,因为M2_HOME/config 下已经有setting.xml文件所以就直接修改:
<localRepository>D:\maven</localRepository>
重新install parent-bom,发现包还是发布在:USER_HOME/.m2/repository下。嗯哼?不是说逐层找setting.xml根据配置来的吗???????小朋友是有很多问好啊????
【最终】将M2_HOME/config下的setting.xml 复制到USER_HOME/.m2 目录下,重新install ,问题解决
总结
虽然最终解决了问题,但是不知道是不是我理解的问题,按理说应该是能找到我M2_HOME/config/setting.xml的,但实际上只能找到USER_HOME/.m2/repository的
补充:
- 本地环境中的 GRADLE_USER_HOME 和 GRADLE_HOME 和 M2_HOME这些环境变量都是配置好的
- 环境变量修改有时候重启idea无法生效,重启电脑才可以。。。。。。。