【发布时间】:2013-02-27 03:32:44
【问题描述】:
我有很好的 gradle 配置,一切都很好。但是我的多项目构建中的一个项目非常依赖于其他项目,因此我很乐意将其移至另一个 git 存储库并配置子模块来处理它。
首先,我将 Project 及其资源移至子文件夹 Libraries/MovedProject。在 gradle 配置中更改了一些行后,它工作正常。但后来我决定为这个项目编写一个新的 build.gradle,并将所有配置从主配置移到那里。
这就是一切停止工作的地方。当我尝试调用任何任务时,它总是结束
与Could not find property 'sourceSets' on project ':Libraries/MovedProject'。负责它的线路是:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
我用它来运行测试,在这些测试中我使用来自其他项目的类。如果我删除该行,则构建仅在到达使用 MovedProject 的项目的 compileTestJava 任务时才会失败。如果我删除该行并致电gradle :Libraries/MovedLibrary:properties 我可以看到:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@1e263938
...
而gradle :Libraries/MovedLibrary:build 正确构建。
目前我的一切设置如下:
-
目录:
- /SomeMainProject1
- /SomeMainProject2
- /SomeMainProject3
- /库
- /已移动项目
- build.gradle
- dependencies.gradle
- project.gradle
- tasks.gradle
- /已移动项目
- /生成器
- dependencies.gradle
- project.gradle
- tasks.gradle
- build.gradle
- settings.gradle
-
settings.gradle
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3 -
MovedProject 的源集在
Libraries/MovedProject/project.gradle中定义:sourceSets { main { java { srcDir 'src' srcDir 'resources' } resources { srcDir 'resources' } } test { java { srcDir 'test/unit' } } } -
使用 sourceSets.test.output 的依赖项存储在
Builder/dependancies.gradle中,并为每个需要 MovedProject 运行测试的项目设置:project(':SomeMainProject1') { dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/net.jsdpu').sourceSets.test.output } } }
摆脱该错误并使用当前目录结构制作 gradle 构建项目的最简单方法是什么?我想了解为什么 gradle 看不到该属性。
【问题讨论】:
标签: gradle multi-project