【问题标题】:Error using dependsOn to call task from another gradle file使用dependsOn从另一个gradle文件调用任务时出错
【发布时间】:2021-04-24 03:11:33
【问题描述】:

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

我的构建文件如下所示:

build.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

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

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

    如果在dependsOn 中给出了任务实例,Gradle 对构建脚本中的任务顺序很敏感。任务setup 依赖于任务(实例)testTask,在编译构建脚本的那一刻,它还不存在。解决此问题的最常见选项是:

    • testTask下面定义任务setup

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

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

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

    【讨论】:

    • 工作就像魅力!谢谢
    猜你喜欢
    • 2015-03-21
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多