Gradle Multi Project使用重复的源文件构建

时间:2016-01-25 15:45:15

标签: intellij-idea gradle build.gradle

我们将Gradle用于我们的项目,并且我正在尝试设置Gradle多项目以使我们的分支过程更容易。对于某些背景,我们的项目使用现有的参考平台,并根据需要添加/修改文件以实现我们的新功能。在某些情况下,更改可能会产生很大影响,我们会在进行更改之前对相关文件进行分支(使用Perforce)。

我们的项目结构如下:

'root project'
    - 'subproject1'
    - 'subproject2'
    - 'subprojectN'

其中每个子项目都包含来自root的分支文件。

root project依赖于我们的参考平台:

dependencies {
    compile fileTree(dir: "$extDir/boot", include: '*.jar')
    compile fileTree(dir: "$extDir/ext", include: '*.jar')
    compile fileTree(dir: "$extDir/ext/admin", include: '*.jar')
    compile fileTree(dir: "$extDir/ext/client", include: '*.jar')
    compile fileTree(dir: "$extDir/ext/geotools", include: '*.jar')
    compile fileTree(dir: "$extDir/ext/server", include: '*.jar')
    compile fileTree(dir: "$extDir/../jdk/jre/lib/", include: '*.jar')

    compile group: 'org.x', name: 'AdminControl', version: '1.9-SNAPSHOT'
    compile group: 'org.x', name: 'AutoQuery', version: '1.9-SNAPSHOT'
    ...
}

问题就出现了,root project还从我们的参考平台分支了一些文件,并覆盖了一些行为。例如,参考平台有一个文件MRReader,它被分支到root project(基本上包含一个副本)。

现在,当subproject包含使用MRReader的代码时,它会自动引用参考平台内的MRReader(上述依赖项位于allprojects {}下)。这会导致许多错误,例如root project中添加的缺失方法,不同的行为等等。

我们如何让subprojects {}使用root project中找到的重写文件来支持参考平台中的文件?

我尝试了以下内容:

subprojects {
    dependencies {
        compile rootProject
    }
}

无济于事。我认为我们必须添加根项目源目录作为子项目的源,但我不确定如何做到这一点。任何帮助将不胜感激。

谢谢!

0 个答案:

没有答案