gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:44:42 25 4
gpt4 key购买 nike

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

apply plugin: 'java'

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

PS:如果构建文件困惑且包含数十个应用插件,这会很方便

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

最佳答案

恐怕这是不可能的,因为 gradle 插件的应用方式的本质。

如果您take a lookPlugin 界面,您将看到它有一个 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 插件添加的任务:

idea tasks: [cleanIdea, cleanIdeaModule, cleanIdeaProject, cleanIdeaWorkspace, idea, ideaModule, ideaProject, ideaWorkspace]

您可以稍微研究一下这段代码并构建一个可接受的解决方案。

关于gradle:如何列出某个插件引入的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36896363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com