【问题标题】: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 }

【问题讨论】:

    标签: gradle dependencies


    【解决方案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”。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多