为啥在 Gradle 中不能将属性声明为输出?
Posted
技术标签:
【中文标题】为啥在 Gradle 中不能将属性声明为输出?【英文标题】:Why in Gradle can't declare property as output?为什么在 Gradle 中不能将属性声明为输出? 【发布时间】:2014-08-27 15:49:04 【问题描述】:如果我的任务更改了某些属性并且在执行两次时增量构建无法完成。并且每次都必须再次执行此任务。我可以使用 upToDateWhen() 方法来检查属性吗?
属性不能声明为任务输出有什么目的吗?
图片来自: (Muschko, Benjamin。“挂钩到构建生命周期。”Gradle in Action。N.p.: n.p., 2014)
【问题讨论】:
upToDateWhen
绝对专用于检查是否应该执行任务。不太明白你的意思,但如果它适合你的需要,请随意使用它。
我想问一下Gradleware为什么做TaskOutput接口没有属性方法?
然后询问 gradle 团队。我想它太短暂了,无法注册为任务输出。
仅供参考:如果您使用 Manning Publications 任何书籍中受版权保护的材料,他们可能会不喜欢它。
对不起。我将引用添加到我拍摄照片的书中。
【参考方案1】:
任务的输入和输出声明用于确定自上次构建以来任务是否“最新”,因此可以在当前构建中安全地跳过。没有任何输出声明意味着任务在构建开始时总是过时的。由于属性不会跨构建持久化,因此输出属性的任务将始终过时并需要运行,这相当于不将属性指定为任务的输出。
【讨论】:
以上是关于为啥在 Gradle 中不能将属性声明为输出?的主要内容,如果未能解决你的问题,请参考以下文章