使一个源集依赖于另一个源集
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.output
和 sourceSets.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 with Eclipse - 多个源集时不完整的.classpath
Android-Studio(或一般的 IDEA)重构多个源集