我需要针对破坏的项目依赖项的调试技巧

时间:2016-06-09 21:15:14

标签: gradle integration-testing

它的配置与其他地方相同。实际上我使用导入来配置集成测试。我已经做了我能想到的所有事情,包括重命名本地集成测试任务和配置,包括查看依赖树,包括使用--debug运行。但由于某种原因,Gradle坚持认为sourceSet上的属性integrationTest不存在于项目间依赖项中:

integrationTestCompile project(':components:things-components:abc-stuff').sourceSets.integrationTest.output

...现在我不是特别喜欢这种语法,我已经抓住了关于项目间测试依赖关系以及它们应该如何应用于测试实用程序组件的风暴。但是,我这样做是因为这似乎是IntelliJ会接受的。这样的写作会带来麻烦:

integrationTestCompile project(path: ':components:things-components:abc-stuff', configuration: 'integrationTest')

我怎么能搞清楚这一点?我只是不明白为什么只有一个项目有这个问题。

为了记录,我也尝试过:

integrationTestCompile project(path: ':components:things-components:abc-stuff', configuration: 'integrationTestCompile')

1 个答案:

答案 0 :(得分:0)

问题在于Gradle还没有被告知为你制作一个罐子,你可以在你的其他项目中消费。

integrationTestCompile project(':components:things-components:abc-stuff').sourceSets.integrationTest.output

获取classFiles和依赖项,这就是它使用该表示法工作的原因。如果您想使用configuration表示法,则需要告诉gradle在integrationTest上发布jar。 jar不必发布到存储库,但将用于内部构建。

您可以这样做:

configurations {
    integrationTest
}

task integrationTestJar (type: Jar) {
    baseName = "${project.name}-integ-test"
    from sourceSets.integrationTest.output
}

artifacts {
    integrationTest integrationTestJar
}

如果您最终在项目日志中执行此操作,我建议您编写一个快速插件来为您执行此操作。