深入了解 Tasks - 定位 tasks

优质
小牛编辑
133浏览
2023-12-01

你经常需要在构建文件里找到你定义的 tasks,
举个例子,
为了配置它们或者使用它们作为依赖. 有许多种方式都可以来实现定位.
首先,
每一个任务都必须是一个 project 的有效属性,
并使用任务名来作为属性名:

例子 15.4. 通过属性获取 tasks

build.gradle

  1. task hello
  2. println hello.name
  3. println project.hello.name

Tasks 也可以通过 tasks collection 来得到.

例子 15.5. 通过 tasks collection 获取 tasks

build.gradle

  1. task hello
  2. println tasks.hello.name
  3. println tasks['hello'].name

你也可以使用 tasks.getByPath() 方法通过任务的路径来使用任何 project 里的任务.
你可以通过使用任务的名字, 任务的相对路径或者绝对路径作为 getByPath() 方法的输入.

例子 15.6. 通过路径获取 tasks

build.gradle

  1. project(':projectA') {
  2. task hello
  3. }
  4. task hello
  5. println tasks.getByPath('hello').path
  6. println tasks.getByPath(':hello').path
  7. println tasks.getByPath('projectA:hello').path
  8. println tasks.getByPath(':projectA:hello').path

gradle -q hello 的输出

  1. > gradle -q hello
  2. :hello
  3. :hello
  4. :projectA:hello
  5. :projectA:hello

参考
TaskContainer 可以知道跟多关于定位 tasks 的选项.