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

时间:2016-04-27 17:04:36

标签: gradle build.gradle

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

apply plugin: 'java'

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

PS:如果包含大量应用插件的凌乱和大型构建文件,这将会派上用场

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

2 个答案:

答案 0 :(得分:6)

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

如果您在Plugin界面take a look,则会看到它有一个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;

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

  

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

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

答案 1 :(得分:0)

gradle tasks -all - Displays all task list.

还使用--info运行gradle任务会显示有关正在执行的任务的更多详细信息。

gradle --info <taskname>
Example : gradle --info build

通过Gradle 6.7测试