Gradle:为 distZip 任务定义的任务依赖项在哪里
Gradle: where are task dependencies defined for distZip task
我正在使用 gradle application plugin。
我注意到:
- distZip 任务在 assemble 任务之前获取 运行。
- 而且我可以看到
来自文档(link 以上),并在我的 gradle 运行 期间确认,
distZip 任务取决于:jar、startScripts 任务
所以执行看起来像这样:
> Task :my-app:processResources
> Task :my-app:compileJava
> Task :my-app:classes
> Task :my-app:jar
> Task :my-app:startScripts
> Task :my-app:distTar
> Task :my-app:distZip
> Task :my-app:assemble
查看 ApplicationPlugin.java and/or DistributionPlugin.java 中的代码,我希望看到定义的任务依赖项。
例如像这样:
distZipTask.dependsOn(jarTask)
distZipTask.dependsOn(createScriptsTask)
assembleTask.dependsOn(distZipTask)
...但我在 java 代码中找不到类似的内容。
如果有人能指出我在哪里寻找这些任务的方向,我将不胜感激 'linked'。
Gradle 可以从任务输入中确定隐含的任务依赖关系。如果一个任务的(输出)被用作另一个任务的输入,Gradle可以推导出必须存在对任务的依赖。此功能称为 incremental build support,因为它还支持检查输入或输出中的更改以在输入未更改时跳过任务。
关于您的示例,任务依赖项在文件 ApplicationPlugin.java
:
的 line 197 and line 208 中隐式定义
libChildSpec.from(jar);
...
binChildSpec.from(startScripts);
这些行中的参数是各自的任务(准确地说:任务的提供者)。 from
方法通常可用于定义文件操作的来源(例如复制、压缩...)。因此,我们将任务 jar
和 startScripts
的结果(输出)定义为某些操作的来源(CopySpec
)。然后将生成的 CopySpec
对象传递给任务 distZip
和 distTar
。当任务尝试解析定义的源时,它会找到任务 jar
和 startScripts
并自行定义它们的依赖关系。
请注意,提到的任务 assemble
是所谓的 生命周期任务 。它不会 运行 任何操作,但可用于将任务组织到构建阶段(就像 build
和 check
)。
我正在使用 gradle application plugin。
我注意到:
- distZip 任务在 assemble 任务之前获取 运行。
- 而且我可以看到 来自文档(link 以上),并在我的 gradle 运行 期间确认, distZip 任务取决于:jar、startScripts 任务
所以执行看起来像这样:
> Task :my-app:processResources
> Task :my-app:compileJava
> Task :my-app:classes
> Task :my-app:jar
> Task :my-app:startScripts
> Task :my-app:distTar
> Task :my-app:distZip
> Task :my-app:assemble
查看 ApplicationPlugin.java and/or DistributionPlugin.java 中的代码,我希望看到定义的任务依赖项。 例如像这样:
distZipTask.dependsOn(jarTask)
distZipTask.dependsOn(createScriptsTask)
assembleTask.dependsOn(distZipTask)
...但我在 java 代码中找不到类似的内容。
如果有人能指出我在哪里寻找这些任务的方向,我将不胜感激 'linked'。
Gradle 可以从任务输入中确定隐含的任务依赖关系。如果一个任务的(输出)被用作另一个任务的输入,Gradle可以推导出必须存在对任务的依赖。此功能称为 incremental build support,因为它还支持检查输入或输出中的更改以在输入未更改时跳过任务。
关于您的示例,任务依赖项在文件 ApplicationPlugin.java
:
libChildSpec.from(jar);
...
binChildSpec.from(startScripts);
这些行中的参数是各自的任务(准确地说:任务的提供者)。 from
方法通常可用于定义文件操作的来源(例如复制、压缩...)。因此,我们将任务 jar
和 startScripts
的结果(输出)定义为某些操作的来源(CopySpec
)。然后将生成的 CopySpec
对象传递给任务 distZip
和 distTar
。当任务尝试解析定义的源时,它会找到任务 jar
和 startScripts
并自行定义它们的依赖关系。
请注意,提到的任务 assemble
是所谓的 生命周期任务 。它不会 运行 任何操作,但可用于将任务组织到构建阶段(就像 build
和 check
)。