Gradle使用maven本地仓库带来的思考。本文主要探讨使用Gradle时maven本地仓库的一般配置。Gradle可以直接使用maven本地仓库的jar吗?下面探讨一下我们在使用Gradle时的思路,配置一个mavenLocal()就意味着会使用maven的本地仓库。这个时候是不是直接使用maven本地仓库的jar包呢?新版本好像可以直接使用maven仓库里的jar了。旧版好像是无效的验证方式。Gradle版本:7.1接下来我把maven仓库和Gradle仓库放在同一个目录下,看看会有什么效果。如果只有一个jar依赖它,那么它是共享的。准备环境和配置maven为了测试localRepository,我先把maven设置文件中配置的localRepository改成一个空目录repository_maven_gradle_test/Users/johnny/.m2/repository_maven_gradle_test配置Gradle的默认本地仓库.默认的gradle仓库位置是~/.gradle/caches/modules-2/files-2.1/....那么如何更改这个位置呢?您需要配置环境变量GRADLE_USER_HOME,并指定一个新目录。这里配置gradle的本地仓库到如下目录,和maven一致。exportGRADLE_USER_HOME=/Users/johnny/.m2/repository_maven_gradle_test创建一个maven项目#随便找个目录执行,我这里直接执行mkdirmaven_project_demovim~/.m2/下的maven_project_demo/pom.xml添加pom.xml文件内容为如下,就靠一个jar这里选择lombok4.0.0com.johnnymavenprojectdemo0.0.1-SNAPSHOTmavenprojectdemomavenprojectdemoorg.projectlomboklombok1.18.24创建一个Gradle工程,直接通过Gradle提供的init方法初始化gradleinit选择要生成的工程类型:1:basic2:application3:library4:GradlepluginEnterselection(default:basic)[1..4]2Selectimplementationlanguage:1:C++2:Groovy3:Java4:Kotlin5:Scala6:SwiftEnterselection(default:Java)[1..6]3Splitfunctionalityacrossmultiplesubprojects?:1:no-onlyoneapplicationproject2:yes-applicationandlibraryprojectsEnterselection(default:no-onlyoneapplicationproject)[1..2]1选择构建脚本DSL:1:Groovy2:KotlinEnterselection(default:Groovy)[1..2]1Selecttestframework:1:JUnit42:TestNG3:Spock4:JUnitJupiterEnterselection(default:JUnitJupiter)[1..4]1项目名称(默认:gradle_project_demo):gradle_project_demo源包(默认:gradle_project_demo):com.johnny.gradleprojectdemobuild.gradle添加lombok实现组:'org.projectlombok',名称:'lombok',版本:'1.18.24'验证maven项目目标执行下载依赖cdmaven_project_demomvncleancompile#执行mavencompile此时查看repository_maven_gradle_test仓库目录已经有依赖的gradle项目执行下载依赖cdgradle_project_demogradleclasses#gradle编译命令再次查看仓库,发现多了一个缓存cdcaches/modules-2/files-2.1#可以找到默认的gradlejar所在位置是没有org.projectlombok使用idea打开lombok的jar的依赖位置,发现确实直接使用了maven中的jar。这可能是新版本的优化?依次执行gradlecdrepository_maven_gradle_testrm-rf*#首先清空仓库cdgradle_project_demogradleclasses#先执行gradle项目总结由于Gradle和Maven的本地仓库配置相同,研究Jar是否可以共享可以总结如下:Gradle默认的本地仓库在~/.gradle/caches/modules-2/files-2.1/...修改Gradle默认的本地仓库只需要配置环境变量GRADLE_USER_HOME指向一个目录即可。此时仓库为GRADLE_USER_HOME/caches/modules-2/files-2.1/...如果GradleGRADLE_USER_HOME配置为maven本地仓库,新版本确实可以直接使用maven中的jar。最后,不建议将Gradle仓库配置为Maven。最好单独使用或者直接使用默认的,因为他们的jar管理方式不一样。jar复制到caches了,可能是以前的Gradle版本,我实验的7.1确实没有复制到caches多想想!多加练习!欢迎大家访问我的个人博客JohnnyHouse欢迎关注我公众号