java - 如何在gradle中构建具有传递项目依赖关系的项目

标签 java eclipse build gradle

我是 gradle 新手,我正在尝试使用 gradle 通过 Gradle IDE 插件在 Eclipse 中构建项目。(Gradle 版本 2.3,Gradle IDE 版本 3.6.3)
我有一个平面布局的三个 Java 项目的示例,具有依赖项 A->B->C。除了直接依赖之外,项目 A、B 和 C 对其他项目一无所知。我需要构建每个项目。
我成功地通过Project B中的settings.gradle文件使B依赖于C以包含Project C,并且B和C构建成功。

include ":C"
project(':C').projectDir = new File(settingsDir, '../C')

然后我尝试使用与 B->C 相同的方式添加依赖项 A -> B(通过添加 settings.gradle 文件)。但是这次项目A的构建失败了,错误:在/B下找不到C。项目B中的settings.gradle文件未读取。
我不想将C的依赖信息添加到A来构建A,因为A不应该知道C。我搜索并无法得到答案。有没有办法解决gradle中的这种传递性项目依赖?非常感谢。

最佳答案

我通过学习gradle DSL文档和一些groovy自己解决了这个问题。我在 settings.gradle 文件中添加以下代码以应用子项目的 settings.gradle(如果存在)。

def applySettings = {
    def file = new File(project(it).projectDir, "settings.gradle");
    if (file.exists()) {
        apply "from" : file.toURI()
    }
}

applySettings ':B'

关于java - 如何在gradle中构建具有传递项目依赖关系的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794552/

相关文章:

Java DateTimeFormatter 从星期一开始一周

python - 缺少 PyDev 代码分析

delphi - SerialForms.pas(17) : W1010 Method 'Create' hides virtual method of base type 'TComponent'

.Net - 模拟和混淆

java - 如何避免父pom受到maven依赖?

java - RecyclerView适配器连接错误: no adapter attached

Java Try 和 Catch IOException 必须被捕获或声明被抛出

Java按位&运算符多重权限

android - 适用于 Mosync IDE 的 Genymotion Android 模拟器插件

java - 如何将具有委托(delegate)实现的接口(interface)添加到类中?