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

Posted

技术标签:

【中文标题】使一个源集依赖于另一个源集【英文标题】:Make one source set dependent on another 【发布时间】:2013-08-11 00:26:50 【问题描述】:

我在 gradle 中设置了一个集成测试源,它取决于我正在编译的主要类。我通过这样做来设置它

integrationTestClasses.dependsOn 'classes'

这是这样做的方式,还是有办法设置对源集的依赖关系以便自动发生?在我的configurations 块中,我已经有了

integrationTestCompile  extendsFrom testCompile 
integrationTestRuntime  extendsFrom integrationTestCompile, testRuntime 

【问题讨论】:

【参考方案1】:

缺少的是:

dependencies 
    integrationTestCompile sourceSets.main.output

有了这个,应该自动建立任务依赖关系。

【讨论】:

谢谢,彼得。我会试试看。 成功了,谢谢。如果我想同时依赖主输出和测试输出,我是否只需要声明对测试的依赖,因为测试已经依赖于主输出?这似乎是我看到但想验证的行为。 这取决于你在这里的意思。 sourceSets.test.output 不包括 sourceSets.main.output 我的 integrationTest 代码依赖于测试代码 (src/test/groovy) 和主代码 (src/main/code)。 我认为我之前对它似乎以这种方式工作的评论是错误的。看起来我需要包含 sourceSets.main.outputsourceSets.test.output【参考方案2】:

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

// 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
    

同样的原则应该适用于将“integrationTest”设置为依赖于“main”。

【讨论】:

以上是关于使一个源集依赖于另一个源集的主要内容,如果未能解决你的问题,请参考以下文章

Gradle:如何指定库的两个源集并在项目中添加依赖项

Gradle with Eclipse - 多个源集时不完整的.classpath

Android-Studio(或一般的 IDEA)重构多个源集

如何使用 gradle kotlin-dsl 添加新的源集

如何在 android gradle.kts 中定义自定义源集?

Spring Boot Test 无法使用 JUnit 5 为自定义集成测试源集加载应用程序上下文