将gradle用于平面的多模块项目,其中settings.gradle不是最高级别的依赖项

时间:2013-12-11 18:38:24

标签: gradle

我有一个多模块项目,其目录结构如下:

proj
|-modA
|-modB
|-modMain
\-modSysTest

依赖关系是:

modB -> modA
modMain -> modB
modMain -> modA
modSysTest -> modMain

我们目前使用Ant作为构建系统。每个模块都有一个build.xml。有一个运行多模块构建的master.xml,它位于modMain中。

我正在研究将我们的项目转换为使用gradle。如果我将build.gradle和settings.gradle放在一个新的兄弟目录中并使用includeFlat设置依赖模块,我可以使用多模块构建。

我尝试将gradle文件移动到modMain中,modMain是我们系统的主要组件以及构建整个系统的顶级构建脚本(master.xml)的主页,但我无法获得构建这样工作。我目前的主要障碍是尝试配置modSysTest以依赖于modMain中的modMain。

以下是modMain中的settings.gradle:

includeFlat 'modA', 'modB', 'modSysTest'

这是modMain的build.gradle文件:

allprojects {
    apply plugin: 'java'

    repositories {
        mavenCentral()
    };
    dependencies {
        testCompile 'junit:junit:4.11'
    }
}

project(':modB') {
    dependencies {
        compile project(':modA')
    }
}

project(':modSysTest') {
    dependencies {
        compile project(':modMain')
    }
}

dependencies {
    compile project(':modA'), project(':modB')
}

使用此配置时,出现错误:

A problem occurred evaluating root project 'modMain'.
> Project with path ':modMain' could not be found in project ':modSysTest'.

我不确定如何将modMain指定为modSysTest的依赖项。

1 个答案:

答案 0 :(得分:1)

根项目的项目路径为:,而不是:modMain。在根项目中使用代码并不是非常习惯(但可能)。我没有看到如何将build.gradlesettings.gradle放入modMain的同级目录中会产生不同的结果(除非您还更改了settings.gradle的内容)。请注意,使用此类设置时,除非您从settings.gradle目录启动构建或使用modMain传递设置文件的位置,否则Gradle将找不到-c