假设您当前正在重构一些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?
1条答案
按热度按时间rryofs0p1#
但没有说明另一种选择。
正确,因为除了文档中解释的以外,没有直接的等价物:
从另一个项目访问任务需要特定的项目评估顺序。
你现在所拥有的并不能改变这样一个事实,即仍然有对项目评估的具体顺序的要求。唯一的区别是您现在使用的是任务提供程序,而不是任务。
由于需要首先解析
project('foo')
的方式,基本上没有影响。这样对吗?在这种情况下,有没有办法安全地使用任务配置避免API?正确与否,没有安全的方法(您可以使用
evaluationDependsOn
,但这仍然不能解决根本问题)。正如上面的文档中所解释的,您依赖于项目评估的顺序。修复它的方法是用户16358266在Sharing outputs between projects中记录的评论中解释的。