Gradle无法检测到平坦依赖

问题描述 投票:0回答:1

我有一个多项目Gradle构建(Gradle 4.4)。我遇到了以下问题。

假设我有以下build.gradle的proj1项目:

repositories {
   flatDir {
       dirs 'libs'
   }
}

dependencies {
       compile name: 'lombok-edge'
}

proj1有lombok-edge.jar的libs文件夹。项目建成成功。我有proj2进口proj1:

dependencies {
    compile project(':proj1')
}

当我尝试构建整个项目时,proj1是构建的,但是Gradle无法构建带有错误的proj2:

  • 出了什么问题:无法解析所有配置文件':proj2:compileClasspath'。 找不到:lombok-edge:。要求:project:proj2> project:proj1

请指教。

gradle
1个回答
0
投票

好吧,Gradle支持传递依赖,但是如何获得依赖(以及任何存储库信息)的方式是不可传递的。 Gradle(像Maven)不关心依赖来自哪里,只要它匹配给定的签名(组,id,版本)。

在您的示例中,项目1定义了Maven依赖项,并可以通过给定的flatDir存储库解析它。项目2依赖于项目1(由Gradle解决)和传递Maven依赖项。项目2负责解决此依赖关系,它将检查任何已定义的存储库,但无法找到它,因为本地存储库未知。这就是构建失败的原因。

如果这两个项目是相关的,因为它们应该是多项目构建的一部分,您应该在顶级build.gradle文件和subprojects闭包中定义本地存储库。

© www.soinside.com 2019 - 2024. All rights reserved.