我有一个多项目的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/