【问题标题】:Build a module with a task使用任务构建模块
【发布时间】:2016-07-20 17:53:58
【问题描述】:

我想通过一个任务从我的项目中构建一个特定的模块,该任务将依次运行它的测试。基本上我想从一个任务中执行“gradle:module:build”。

task thatBuildsTheModule() << {
   .....
}

task A() << {
  ......
  tasks.thatBuidsTheModule.execute()
  ......
}

我该怎么做?

【问题讨论】:

    标签: gradle build build.gradle


    【解决方案1】:

    你已经接近了。不建议在 task 上调用 execute。而是使用任务图并使您的构建器任务依赖于您的 A 任务,在本例中标记为 anotherTask

    // create builder task
    task thatBuildsTheModule << {
        println "Hello $it.name"
    }
    // create our other task
    task anotherTask << {
        println "Hello $it.name"
    }
    // make `anotherTask`'s execution depend on the execution of our builder task
    anotherTask.dependsOn thatBuildsTheModule
    

    现在我们可以看到,只执行anotherTask 任务我们也执行了thatBuildsTheModule 任务

    $ ./gradlew -q anotherTask
    Hello thatBuildsTheModule
    Hello anotherTask
    

    【讨论】:

    • 非常感谢!另外,有没有办法从任务构建模块?如何从任务内部触发构建? (基本上从任务中执行“gradle :module:build”)
    • 您想让任务依赖于其他任务。 project('module').tasks.findByName('build').dependsOn anotherTask 现在执行 anotherTask 也会执行 :module:build
    • project('module').tasks.findByName('build').dependsOn 为空。可能的原因是什么?
    • 根据您从哪里调用它(例如,如果从子项目调用),您可能必须从rootProject 获取模块。示例:project.rootProject.project('module').tasks.findByname('build').dependsOn anotherTask
    • 非常感谢!另外,我可以将构建任务配置为以最快的方式运行构建和测试的设置吗?例如,并行执行操作,为测试提供更多堆内存等。类似 project.rootProject.project('module').tasks.findByname('build').configure?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多