Gradle无法检测到平坦依赖

时间:2017-12-29 22:32:58

标签: gradle

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

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

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:。   要求:     项目:proj2>项目:proj1

请告知。

1 个答案:

答案 0 :(得分:0)

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

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

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