在Gradle的DependencyResolutionManagement中使用FlatDir配置本地依赖路径异常
解决Gradle本地Jar依赖路径解析错误问题
我需要在settings.gradle.kts的dependencyResolutionManagement块中,将根项目目录下的本地Jar依赖(存放在plugins文件夹)作为main模块的buildscript classpath引入,但Gradle错误地将路径解析为C:\Users\Name\.gradle\daemon\7.5\plugins。
我的settings.gradle.kts代码如下:
pluginManagement { repositories { google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url = uri("https://jitpack.io") } flatDir { dirs = setOf(File("plugins")) } } } rootProject.name = "AndroidApp" include(":main", ":base")
我尝试了以下几种方式,但都无法正确指向项目根目录:
File(".").absolutePath:返回C:\Users\Name\.gradle\daemon\7.5\.rootProject.path:返回:rootProject.children.size:返回0
解决方案
在dependencyResolutionManagement阶段,rootProject还未完成初始化,所以不能通过它获取根目录路径。需要使用Gradle提供的settingsDir属性,它直接指向settings.gradle.kts所在的项目根目录。修改flatDir配置如下:
flatDir { dirs = setOf(File(settingsDir, "plugins")) }
这样就能正确将项目根目录下的plugins文件夹作为本地Jar仓库引入。
内容的提问来源于stack exchange,提问作者You Qi
相关产品推荐
相关产品推荐

