You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle解析依赖时为何将点转为斜杠?依赖路径匹配异常

Gradle依赖搜索路径不符合预期问题

配置与问题场景

我的build.gradle配置如下:

def external = file('../external').absolutePath  

repositories {
    maven {
        url file(external).toURI()
    }
}

dependencies {
    api 'ch.qos.cal10n:cal10n-api:0.7.7'
}

项目依赖的第三方库手动下载后,存储在../external/ch.qos.cal10n/cal10n-api/0.7.7/目录下(包含.jar和.pom文件)。但执行gradle build时出现错误:

Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not find ch.1qos.cal10n:cal10n-api:0.7.7.
     Searched in the following locations:
       - file:/home/a/b/external/ch/1qos/cal10n/cal10n-api/0.7.7/cal10n-api-0.7.7.pom

疑问:为何Gradle实际搜索路径是/home/a/b/external/ch/1qos/cal10n/cal10n-api/0.7.7/cal10n-api-0.7.7.pom,而非预期的/home/a/b/external/ch.qos.cal10n/cal10n-api/0.7.7/cal10n-api-0.7.7.pom?

原因分析

  1. Maven仓库结构规范不匹配
    当把本地目录配置为Maven仓库时,Gradle会严格遵循Maven的目录规则:Group ID中的每个英文句点(.)会被拆分为层级子目录,而非将整个Group ID作为单个目录。
    对于依赖ch.qos.cal10n:cal10n-api:0.7.7,符合规范的存储路径应该是../external/ch/qos/cal10n/cal10n-api/0.7.7/,你当前的目录结构完全不符合这个规则,所以Gradle无法识别。

  2. 依赖声明可能存在笔误
    错误日志显示Gradle在查找ch.1qos.cal10n:cal10n-api:0.7.7,这说明你的依赖声明大概率把qos写成了1qos(字母q误写为数字1)。这种情况下,Gradle会按照错误的Group ID拆分目录,导致搜索路径变成ch/1qos/cal10n/...。

解决方法

  • 调整目录结构:按照Maven规范重新组织目录,将.jar和.pom文件移动到正确路径:
    ../external/ch/qos/cal10n/cal10n-api/0.7.7/
    
  • 检查依赖声明:确认build.gradle中的依赖Group ID是ch.qos.cal10n,修正可能存在的笔误。

内容的提问来源于stack exchange,提问作者armaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:18:23