为啥在 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 中不能将属性声明为输出?的主要内容,如果未能解决你的问题,请参考以下文章

c++中重载输出操作符,为啥要返回引用

为啥用excel的IF函数,不能输出空白呢

hadoop中利用context.write为啥只需要对象就可以直接获得属性值?

java中输出流不关闭为啥不能写入

Java:为啥我不能将数组声明为简单对象?

为啥 main() 不能在 C 中声明为静态的?