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

gradle:我如何列出某个插件引入的任务,gradle,build.gradle,Gradle,Build.gradle,可能是一个简单的问题,但我找不到一种方法来列出哪些任务是由在build.gradle文件中应用的插件引入的。 因此,假设您的build.gradle是: apply plugin: 'java' 有没有简单的方法让gradle列出该插件引入的所有任务 PS:如果有几十个应用插件的凌乱和大型构建文件,这会很方便 PS2:我不是问任务的依赖性。我的问题不同,而且很清楚。我应用的每个插件都引入了自己的一些任务(不管什么取决于什么)。问题是,首先新引入的任务是什么 我担心这是不可能的,因为gradle

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

apply plugin: 'java'
有没有简单的方法让gradle列出该插件引入的所有任务

PS:如果有几十个应用插件的凌乱和大型构建文件,这会很方便


PS2:我不是问任务的依赖性。我的问题不同,而且很清楚。我应用的每个插件都引入了自己的一些任务(不管什么取决于什么)。问题是,首先新引入的任务是什么

我担心这是不可能的,因为gradle插件应用的本质

如果您在
Plugin
界面,您将看到它有一个
apply(projectp)
方法。插件的职责是配置一个项目-它可以添加特定的任务/配置/等等。例如,gradle是无状态的,所以你不能从中获取任务

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

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;
这将打印Idea插件添加的任务:

idea任务:[cleanIdea、cleanIdea模块、cleanIdea项目、, CleanIdeA工作空间、创意、创意模块、创意项目、创意工作空间]

您可以使用这段代码构建一个可接受的解决方案

gradle tasks -all - Displays all task list.
同时,使用--info运行gradle任务将显示有关正在执行的任务的更多详细信息

gradle --info <taskname>
Example : gradle --info build
gradle--info
示例:gradle——信息构建

用Gradle 6.7进行测试

我的问题可能重复的部分不同。阅读PS2。这不是一个很好的方法,但是你可以尝试区分
/gradlew任务——所有的
结果——有插件和没有插件。对于小型(ish)项目来说,这并不坏,但仍然很难扩展:(是的,还有它的文档(如果有的话)。这就是我一直在做的。不过,如果有一个gradle命令来列出每个插件的任务,那就很方便了。