gradle - Gradle无法检测到平坦依赖

标签 gradle

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

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

repositories {
   flatDir {
       dirs 'libs'
   }
}

dependencies {
       compile name: 'lombok-edge'
}

proj1的libs文件夹带有lombok-edge.jar。项目已成功构建。
我有进口proj1的proj2:
dependencies {
    compile project(':proj1')
}

当我尝试构建整个项目时,proj1已构建,但Gradle无法构建proj2并出现错误:
  • 出了什么问题:
    无法解析配置':proj2:compileClasspath'的所有文件。

    Could not find :lombok-edge:. Required by: project :proj2 > project :proj1


  • 请指教。

    最佳答案

    好了,Gradle支持可传递的依赖关系,但是如何获得依赖关系(以及任何存储库信息)的方法不是可传递的。 Gradle(与Maven一样)并不关心依赖项的来源,只要它与给定的签名(组,ID,版本)匹配即可。

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

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

    关于gradle - Gradle无法检测到平坦依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48029138/

    相关文章:

    android - 无法解析 : com. android.support :appcompat-v7:27. 0.2

    maven - Gradle 和本地 Ivy 存储库未找到传递依赖项

    groovy - 检查Gradle使用的Groovy版本

    android - 如何配置具有自己依赖的外部库?

    java - “Cannot find or load main class net.epsilon.app.Main” Java [等级]

    java - 测试期间是否需要对Gradle进行调整/替代记录器配置?

    android - 杰森塞里亚尔

    gradle - 配置Gradle Shadow插件以仅具有一个重新定位的依赖关系创建库jar

    java - 如何在Java代码中获取gradle jar list 属性(或通过Java变量进行设置)

    java - 如何为多项目gradle项目实现全局资源文件夹?