Fudge Fudge Asked: 2023-08-27 14:17:14 +0800 CST2023-08-27 14:17:14 +0800 CST 2023-08-27 14:17:14 +0800 CST 定义任务的非文件输出并在 Gradle 中的另一个任务中使用它的最佳方法 772 假设我有这样的任务流程: 任务 B 和 C 依赖于任务 A。现在,假设我想在任务中使用值“dogs”: 最好的方法是什么?Gradle 允许使用 @OutputFile 执行此操作: @OutputFile File outputFile; 但对于非文件没有等效的@Output: @Output int dogs; gradle 1 个回答 Voted Best Answer RenatoIvancic 2023-08-27T15:30:12+08:002023-08-27T15:30:12+08:00 任务输出 增量构建时需要考虑的任务之间没有内存值共享。虽然将这个值写入dogs=16文件然后在其他任务中从文件中读取该值仍然是有效的选项。 共享属性 另一种方法是您的任务 A在 Project 对象(或其他对象,如果需要)上定义额外的属性project.extra["dogs"]=16,例如。之后任务 B 和 C 可以读取同一属性val shepherdDogs = project.extra["dogs"]. 当然,如果任务没有输出,则任务将在每次构建时执行;您将无法使用增量构建。它必须始终执行,因为该属性存储在内存中,并且每次运行构建时,您都必须为狗设置值,因为该值没有存储在文件中的某个位置。
任务输出
增量构建时需要考虑的任务之间没有内存值共享。虽然将这个值写入
dogs=16
文件然后在其他任务中从文件中读取该值仍然是有效的选项。共享属性
另一种方法是您的任务 A在 Project 对象(或其他对象,如果需要)上定义额外的属性
project.extra["dogs"]=16
,例如。之后任务 B 和 C 可以读取同一属性val shepherdDogs = project.extra["dogs"]
. 当然,如果任务没有输出,则任务将在每次构建时执行;您将无法使用增量构建。它必须始终执行,因为该属性存储在内存中,并且每次运行构建时,您都必须为狗设置值,因为该值没有存储在文件中的某个位置。