返回介绍

深入了解 Tasks - 给 task 加入依赖

发布于 2020-07-06 13:40:57 字数 3659 浏览 1052 评论 0 收藏 0

有许多种加入依赖的方式. 在 6.5 小节, “任务依赖”里, 你已经学习了如何使用任务的名称定义依赖. 任务名称可以指向同一个项目里的任务, 或者其他项目里的任务. 为了指向其他项目, 你必须在任务的名称前加入项目的路径. 下面的例子给 projectA:taskX 加入依赖 projectB:taskY :

例子 15.11. 从另外一个项目给任务加入依赖

build.gradle

  1. project('projectA') {
  2. task taskX(dependsOn: ':projectB:taskY') << {
  3. println 'taskX'
  4. }
  5. }
  6. project('projectB') {
  7. task taskY << {
  8. println 'taskY'
  9. }
  10. }

gradle -q taskX 的输出

  1. > gradle -q taskX
  2. taskY
  3. taskX

除了使用任务名称, 你也可以定义一个依赖对象y:

例子 15.12. 通过任务对象加入依赖

build.gradle

  1. task taskX << {
  2. println 'taskX'
  3. }
  4. task taskY << {
  5. println 'taskY'
  6. }
  7. taskX.dependsOn taskY

gradle -q taskX 的输出

  1. > gradle -q taskX
  2. taskY
  3. taskX

更加先进的用法, 你可以通过闭包定义一个任务依赖. 闭包只能返回一个单独的 Task 或者 Task 对象的 collection, 这些返回的任务就将被当做依赖. 接下来的例子给 taskX 加入了一个复杂的依赖, 所有以 lib 开头的任务都将在 taskX 之前执行:

例子 15.13. 通过闭包加入依赖

build.gradle

  1. task taskX << {
  2. println 'taskX'
  3. }
  4. taskX.dependsOn {
  5. tasks.findAll { task -> task.name.startsWith('lib') }
  6. }
  7. task lib1 << {
  8. println 'lib1'
  9. }
  10. task lib2 << {
  11. println 'lib2'
  12. }
  13. task notALib << {
  14. println 'notALib'
  15. }

gradle -q taskX 的输出

  1. > gradle -q taskX
  2. lib1
  3. lib2
  4. taskX

For more information about task dependencies, see the Task API.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文