首页 > 解决方案 > 使用dependsOn从另一个gradle文件调用任务时出错

问题描述

我正在使用一个 build.gradle 文件,该文件有多种方法来指定任务设置的执行。为了从另一个 gradle 文件 - runtests.gradle 调用任务,我创建了一个任务 - testTask并使用dependsOn添加了任务依赖项,但是这个实现似乎不起作用并给出了一个错误,例如: 在 root 上找不到属性 'testTask'项目'GradleFile

我的构建文件如下所示:

构建.gradle

task setup(dependsOn: testTask)  <<
 {
    println "In main execution"
}

// new task
task testTask(type: GradleBuild) {
        if (getEnvironmentVariable('RUN_TEST').equalsIgnoreCase("true")) {      
        buildFile = "../Behave/runtests.gradle"
        tasks = ['mainTask']
    }
        else {
        println "Exiting runTests Task"
    }
}

setup.doFirst {
println "In first execution"
}

setup.doLast {
    println "In last execution"
}

D:\>gradle -q GradleFile/build.gradle setup

我不希望对现有任务进行太多更改,那么我应该尝试其他解决方法吗?我浏览了许多链接,但找不到适合这种情况的任何东西。请寻找建议。

标签: gradlebuild.gradle

解决方案


如果在dependsOn. 该任务setup取决于任务(实例)testTask,该任务(实例)在编译构建脚本时尚不存在。解决此问题的最常见选项是:

  • setup在下面定义任务testTask

    task testTask(type: GradleBuild) {
    }
    
    task setup(dependsOn: testTask) {
    }
    
  • 使用任务的相对路径,即任务的名称,在dependsOn

    task setup(dependsOn: 'testTask') {
    }
    
    task testTask(type: GradleBuild) {
    }
    

请在 的 Javadoc 中找到更多详细信息Task


推荐阅读