我有三个模块:

  • amodule
  • bmodule
  • cmodule

  • 所有这三个模块中都有集成测试。 bmodule是基础-它包含BaseClass,我想在amodulecmodule的集成测试中使用它

    我的项目示例在github上:https://github.com/ljql/test-deps

    我尝试在bmoduleamodule中的cmodule集成测试中添加依赖项。
    文件build.gradleamodulecmodule模块中看起来相同
    sourceSets {
        intTest {
            java {
                srcDir 'src/test-integration/java'
            }
            resources {
                srcDir 'src/test-integration/resources'
            }
            compileClasspath += rootProject.project('bmodule').sourceSets.intTest.output
            runtimeClasspath += rootProject.project('bmodule').sourceSets.intTest.output
        }
    }
    
    configurations {
        intTestCompile {
            extendsFrom compile
        }
        intTestRuntime {
            extendsFrom runtime
        }
    }
    
    dependencies {
        intTestCompile project(path: ':bmodule', configuration:  'intTestCompile')
    }
    

    但是,当我尝试构建amodule时,出现了一个错误:
    Build file '/test-deps/amodule/build.gradle' line: 10
    
    A problem occurred evaluating project ':amodule'.
    > Could not get unknown property 'intTest' for SourceSet container of type org.gradle.api.internal.tasks.DefaultSourceSetContainer.
    

    作为cmodule副本的amodule的构建成功完成。
    amodulecmodule之间的唯一区别在于它们的名称。 amodulebmodulecmodule之前,后面是bmodule
    在我的情况下,如何指定gradle解决依赖关系的序列?我想让gradle首先了解bmodule,然后再了解amodulecmodule

    最佳答案

    尝试将其放在amdoule的build.gradle中

    preBuild.dependsOn ":bmodule:build"
    

    10-07 19:16