Gradle 使一个源集依赖于另一个源集

Gradle 使一个源集依赖于另一个源集,gradle,dependencies,Gradle,Dependencies,我在gradle中设置了一个集成测试源代码集,它依赖于正在编译的主类。我是这样做的 integrationTestClasses.dependsOn 'classes' 是这样做的,还是有办法在源集上设置依赖项以便自动执行?在我的配置块中,我已经有了 integrationTestCompile { extendsFrom testCompile } integrationTestRuntime { extendsFrom integrationTestCompile, testRuntime

我在gradle中设置了一个集成测试源代码集,它依赖于正在编译的主类。我是这样做的

integrationTestClasses.dependsOn 'classes'
是这样做的,还是有办法在源集上设置依赖项以便自动执行?在我的
配置
块中,我已经有了

integrationTestCompile { extendsFrom testCompile }
integrationTestRuntime { extendsFrom integrationTestCompile, testRuntime }
缺少的是:

dependencies {
    integrationTestCompile sourceSets.main.output
}

这样,任务依赖关系应该自动建立。

在定义源集时,也可以建立依赖关系链。这有助于将“主”源集设置为依赖于“生成的”源集:

// Default sourceSets already created by the java plugin: src/main and src/test
// Default content for each sourceSet: /java and /resources
sourceSets {
    // Adding src/generated
    generated
    // Setting src/main to depend on the dependencies and output of src/generated
    main {
        compileClasspath += generated.compileClasspath + generated.output
    }
}

同样的原则也应该适用于将“集成测试”设置为依赖于“main”。

谢谢,Peter。我试试看。这很有效,谢谢。若我想同时依赖于main和测试输出,那个么由于测试已经依赖于main,我是否只需要声明对测试的依赖?这似乎是我看到的行为,但我想验证。这取决于你在这里的确切意思
sourceset.test.output
不包括
sourceset.main.output
。我的integrationTest代码既依赖于测试代码(src/test/groovy),也依赖于主代码(src/main/code)。我认为我之前对它的评论似乎是错误的。看起来我需要包括
sourceset.main.output
sourceset.test.output