当前位置: 首页 > 知识库问答 >
问题:

在一个自定义的分级插件中,如何添加任务取决于其他插件中定义的任务?

佴德曜
2023-03-14

例如,我有一个插件:公共类PluginA实现plugin。

我会创建一个任务塔斯卡。现在我想设置:taska.dependson taskB,但是taskB是在pluginb中定义的。

有没有可能做到这一点,如果可以,如何做到?

共有1个答案

那宏大
2023-03-14

您不需要知道taskb来自pluginb来创建对taska的依赖关系:您只需按其名称引用taskb,如下所示:

class PluginA implements Plugin<Project> {
    void apply(Project project) {

        Task taskA = project.task('taskA') {
            doLast {
                println 'Executing task A from plugin A'
            }
        }
        // create dependency from taskA to taskB
        project.tasks.matching { it.name == 'taskB'}.each {
            taskA.dependsOn it
        }
    }
}

请注意,如果应用plugina的消费项目没有应用pluginb,则不会创建依赖项。也许您希望/需要在应用plugina时自动应用pluginb

另一种方法是仅在应用pluginB时使用PluginManager.WithPlugin方法创建此依赖项:

class PluginA implements Plugin<Project> {
    void apply(Project project) {

        Task taskA = project.task('taskA') {
            doLast {
                println 'Executing task A from plugin A'
            }
        }
        project.pluginManager.withPlugin('pluginB'){                
            println "pluginB applied => adding dependency from taskA to taskB"
            project.afterEvaluate{
                taskA.dependsOn project.tasks.getByName('taskB')
            }
        }
    }
}
 类似资料:
  • 试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b

  • 小结:我想写一个gradle任务,它依赖于一个插件。我特别想使用plugin用于我的部署任务 我有以下项目结构 在我的主要身材中。gradle我导入插件并定义任务: 在中,我定义了它: 我显然收到了错误信息: 问题是,我可以(但不想)在main如下(无错误)

  • 我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,

  • 问题内容: 我的公司最近写了gradle插件来进行原始配置(存储库,项目间的通用依赖关系等)。总体而言,这大大简化了我们的构建过程,并发现了项目之间的一些不一致之处。我们最近尝试向插件添加任务,但该任务无法正常工作。 这是坏掉的插件: 除了之外,此插件都很好用。当我将其添加到混合中(并编译/部署到我们的本地仓库)时,当我尝试构建使用插件的项目时出现此错误: 问题答案: 在脚本中定义任务时,将调用方

  • 我想把多个分级任务作为一个来运行。所以不是 这行不通