【采坑记录】gradle publishToMavenLocal 打包到本地仓库问题

基础环境

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 ;

  1. 查看USER_HOME/.m2 目录,发现无setting.xml
  2. 查看M2_HOME/config 发现有setting.xml文件,但是没做任何配置
  3. 查看USER_HOME/.m2/repository ,发现无setting.xml
    setting.xml 没有配置本地仓库地址,则默认仓库地址为 USER_HOME/.m2/repository

问题处理

问题已经定位,那我们只要设置setting.xml的本地仓库就可以了,因为M2_HOME/config 下已经有setting.xml文件所以就直接修改:

D:\maven

重新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的

补充:

  1. 本地环境中的 GRADLE_USER_HOME 和 GRADLE_HOME 和 M2_HOME这些环境变量都是配置好的
  2. 环境变量修改有时候重启idea无法生效,重启电脑才可以。。。。。。。

你可能感兴趣的:(【采坑记录】gradle publishToMavenLocal 打包到本地仓库问题)