2017-05-04 63 views
0

我想创建一个任务,将其作为其他任务的输入@OutputFile。我知道需要将输出文件作为输入,而不是创建该输出文件的任务,以便使用输出的任务可以输出创建者。我如何找到哪个任务创建输出?如何找到创建一些特定输出的Gradle任务?

更具体:

  • $unknownTask创建someKnownOutput
  • newTask使用someKnownOutput
  • newTaskdependsOn $unknownTask

如何的$unknownTask值可以找到?

+0

通过“输出”你的意思是控制台输出或文件?如果任务将该文件标记为TaskOutput,则可以通过使用-i或-d(我想象Gradle会记录这些事情)来获得洞察。如果没有,那么Gradle无法知道内部的任务是什么,所以你应该自己做。 –

+0

我已经编辑了这个问题,以便更清楚(即使我认为“更具体”下的描述非常清晰)。 –

+0

常规方法是了解Gradle或使用的插件如何工作以获取必要的见解。文件的名称是否不变或是否遵循某种模式? –

回答

0

下应该打印出来,其输出是thisIsTheOne任务:

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

请使用您问题上的编辑链接添加其他信息。后回答按钮应该只用于问题的完整答案。 - [来自评论](/ review/low-quality-posts/16035083) – Carpetsmoker

+0

这是我的问题的答案。 –

+1

好吧,够公平的。没有任何文本,有点难以分辨,特别是因为有人问“你的build.gradle文件是怎么样的?”在评论中;-) – Carpetsmoker

相关问题