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