Java [Gradle][Play]compilePlayBinaryScala在哪里定义?

Java [Gradle][Play]compilePlayBinaryScala在哪里定义?,java,gradle,playframework,Java,Gradle,Playframework,我对gradle和Play比较陌生 我正在做一个使用gradle作为构建系统的play项目。我试图使用构建缓存来提高性能。从构建扫描中,我观察到“compilePlayBinaryScala”不可缓存,并且大多数其他任务都依赖于“compilePlayBinaryScala”。为“compilePlayBinaryScala”启用缓存将真正扩大构建规模 Gradle官方文档列出任务() 我找不到“compilePlayBinaryScala”或任何其他*PlayBinaryScala任务的明确任

我对gradle和Play比较陌生

我正在做一个使用gradle作为构建系统的play项目。我试图使用构建缓存来提高性能。从构建扫描中,我观察到“compilePlayBinaryScala”不可缓存,并且大多数其他任务都依赖于“compilePlayBinaryScala”。为“compilePlayBinaryScala”启用缓存将真正扩大构建规模

Gradle官方文档列出任务()

我找不到“compilePlayBinaryScala”或任何其他
*PlayBinaryScala
任务的明确任务定义。这些任务在哪里定义

根据我的研究,我可以看到这个文件,其中可以创建任务。但是,我不确定


因为我是新手,详细解释为什么这样做会非常有帮助。

任务是在该文件中创建的,但不是在您链接的方法中创建的。在方法中为每个二进制文件创建任务,如。
@Mutate
@BinaryTasks
,`@componentbinary是Gradle中称为基于规则的模型(也称为软件模型)的一部分。有关用法的说明,请参见。Gradle团队对这种模式进行了几年的试验,但最终决定不使用,并且没有正式反对(参见博客文章)

compilePlayBinaryScala
的类型为。这在文档中有说明,也可以通过运行
/gradlew model
或添加类似于记录该类型的任务操作来确定。
compilePlayBinaryScala的任务名
是从插件的几个不同部分计算出来的。组件名称是
“play”
,因此二进制文件和任务是基于此和目标平台生成的。如果插件支持多个平台(在编写本文时不支持),任务命名约定将更加明显.另一个基于组件名称生成任务的插件示例是Gradle的

关于规则模型是如何构造的,不值得深入讨论,但是高级是方法的第一个参数,是主题,可以更改,而其余参数是输入,是不可变的。在上面链接的方法中,您会注意到第一个参数的类型是
ModelMap
可以变异的
Task
对象的一部分。流看起来像这样(我可能缺少一些东西):

  • 其他一些配置规则
这是我能给你的最详细的信息,而不需要深入研究
ScalaLanguagePlugin
/gradlew模型将为你提供一些东西的来源报告,可能会有帮助,但也可能不是因为这些东西是在该模型和正常Gradle配置之间进行管理的模型