如何找到创建特定输出的Gradle任务?

如何找到创建特定输出的Gradle任务?,gradle,Gradle,我想创建一个任务,将其他任务的@OutputFile作为输入。我知道需要作为输入的输出文件,但不知道创建该输出文件的任务,以便使用该输出的任务可以依赖输出创建者。如何找到创建该输出的任务 更具体地说: $unknownTask创建someKnownOutput newTask使用someKnownOutput newTask想要dependsOn$unknownntask 如何找到$unknownTask的值?以下应打印出输出为this is the one的任务: task findTas

我想创建一个任务,将其他任务的
@OutputFile
作为输入。我知道需要作为输入的输出文件,但不知道创建该输出文件的任务,以便使用该输出的任务可以依赖输出创建者。如何找到创建该输出的任务

更具体地说:

  • $unknownTask
    创建
    someKnownOutput
  • newTask
    使用
    someKnownOutput
  • newTask
    想要
    dependsOn$unknownntask

如何找到
$unknownTask
的值?

以下应打印出输出为
this is the one
的任务:

task findTaskCreatingSpecificOutput() {
  doLast {
    subprojects { subproject ->
      subproject.tasks.findAll { task ->
        task.outputs.getFiles().getFiles().findAll { output ->
          output == 'thisIsTheOne'
        }
      }.flatten().each { println it }
    }
  }
}

“输出”是指控制台输出还是文件?如果任务将该文件标记为TaskOutput,那么您可能可以通过使用-i或-d运行来获得洞察力(我想Gradle会记录这些事情)。如果没有,那么Gradle就无法知道任务内部在做什么,所以你只能靠自己了。我对这个问题进行了编辑,以使其更清楚(尽管我认为
下的描述更具体一些
非常清楚)通常的方法是了解Gradle或使用的插件如何工作以获得必要的见解。文件名是常量还是遵循模式?您的
build.gradle
文件是什么样子的?对于这个特定实例,我找到了创建该文件的原因。由于这不是我第一次遇到这个问题,我希望有一个更普遍的解决方案来解决这个问题。不过,我想我已经快把它编成法典了,我会在有答案的时候发布答案。请使用问题的编辑链接添加更多信息。回答后按钮只能用于完整回答问题。-这是我问题的答案。好吧,很公平。如果没有任何文本,就有点难说,尤其是有人在评论中问到“你的build.gradle文件看起来怎么样?”;-)添加文本。对不起,我说的模棱两可。