Gradle任务配置避免和findByPath

yzckvree  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(159)

假设您当前正在重构一些Gradle代码,以利用任务配置避免API。根据文档,您应该避免使用TaskContainer.findByPath(),但没有说明替代方案。

因此,假设我的build.gradle中有以下内容:

tasks.register('myTask') {
  dependsOn tasks.findByPath(':foo:bar')
}

如果我正在阅读的文档,则将上述内容重写为

tasks.register('myTask') {
  dependsOn project('foo').tasks.named('bar')
}

由于需要首先解析project('foo')的方式,基本上没有影响。这样对吗?在这种情况下,有没有办法安全地使用任务配置避免API?

rryofs0p

rryofs0p1#

但没有说明另一种选择。

正确,因为除了文档中解释的以外,没有直接的等价物:

从另一个项目访问任务需要特定的项目评估顺序。

你现在所拥有的并不能改变这样一个事实,即仍然有对项目评估的具体顺序的要求。唯一的区别是您现在使用的是任务提供程序,而不是任务。

由于需要首先解析project('foo')的方式,基本上没有影响。这样对吗?在这种情况下,有没有办法安全地使用任务配置避免API?

正确与否,没有安全的方法(您可以使用evaluationDependsOn,但这仍然不能解决根本问题)。正如上面的文档中所解释的,您依赖于项目评估的顺序。修复它的方法是用户16358266在Sharing outputs between projects中记录的评论中解释的。

相关问题