我有一个多项目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:
请指教。
好吧,Gradle支持传递依赖,但是如何获得依赖(以及任何存储库信息)的方式是不可传递的。 Gradle(像Maven)不关心依赖来自哪里,只要它匹配给定的签名(组,id,版本)。
在您的示例中,项目1定义了Maven依赖项,并可以通过给定的flatDir
存储库解析它。项目2依赖于项目1(由Gradle解决)和传递Maven依赖项。项目2负责解决此依赖关系,它将检查任何已定义的存储库,但无法找到它,因为本地存储库未知。这就是构建失败的原因。
如果这两个项目是相关的,因为它们应该是多项目构建的一部分,您应该在顶级build.gradle
文件和subprojects
闭包中定义本地存储库。