gradle:如何列出某个插件引入的任务

7 gradle build.gradle

可能是一个简单的问题,但我找不到一种方法来列出在build.gradle文件中应用的插件引入了哪些任务.所以,假设你的build.gradle很简单:

apply plugin: 'java'
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以使gradle列出该插件引入的所有任务?

PS:如果出现乱七八糟的大型构建文件以及数十个应用插件,那将会很方便

PS2:我不是在询问任务的依赖性.我的问题不同而且很清楚.我申请的每个插件都引入了一些自己的任务(更别管取决于什么).问题是首先是新引入的任务?

Ada*_*ker 7

我担心这是不可能的,因为自然界如何应用gradle插件.

如果你一下Plugin界面,你会发现它有一个apply(Project p)方法.插件的职责是配置项目 - 它可以添加特定的任务/配置/等.例如,gradle JavaPlugin是无状态的,因此您无法从中获取任务.

想到的唯一解决方案是在应用插件后获得任务差异:

的build.gradle

def tasksBefore = [], tasksAfter = []    
project.tasks.each { tasksBefore.add(it.name) } // get all tasks

apply(plugin: 'idea') // apply plugin

project.tasks.each { tasksAfter.add(it.name) } // get all tasks
tasksAfter.removeAll(tasksBefore); // get the difference

println 'idea tasks: ' + tasksAfter;
Run Code Online (Sandbox Code Playgroud)

这将打印Idea插件添加的任务:

想法任务:[cleanIdea,cleanIdeaModule,cleanIdeaProject,cleanIdeaWorkspace,idea,ideaModule,ideaProject,ideaWorkspace]

您可以使用此代码进行一些操作并构建可接受的解决方案.