【问题标题】:how to execute the tasks from custom gradle plugin如何从自定义 gradle 插件执行任务
【发布时间】:2018-02-13 16:04:03
【问题描述】:

背景:-

我创建了一个 gradle 插件,比如 XXX,它有

1)一个 groovy 类在一个包中,实现了 org.gradle.api 的插件接口。插件,并在覆盖的应用方法中,我编写了与 git 相关的功能,

2)在插件 XXX 的 build.gradle 中,我有另一个 task 作为 confluence 已实现使用插件“com.github.qwazer.markdown-confluence”

XXX Plugin
    |_______ com.gradle.plugin.gitFunctionality
    |                       |________________ gitFunctionality(groovy class)
    |_______ build.gradle

XXX插件的build.gradle

gradlePlugin {
    plugins {
        "gradle-plugin-XXX" {
            id = "com.gradle.plugin.gitFunctionality"
            implementationClass = "com.gradle.plugin.gitFunctionality.ReportPlugin"
        }
    }
}
.
.
.
.
confluence {

    //upload page to confluence
.
.
}

现在我可以在 maven.publish 插件的 publishToMavenLocal 的帮助下在本地测试插件实现,我已经在其中一个项目中导入了插件,比如从本地 maven 说“ABCD”

问题

1) 当我尝试运行命令./gradlew build publishToMavenLocal 时,它只运行第一个是 git 功能而不是汇合为什么?我希望同时运行用 reportPlugin 和 confluence 任务编写的 gitFunctionality,但我可以看到为 git 打印的输出

2) 在项目 ABCD 中导入插件后,如果我想执行这两个任务/插件作为项目 ABCD 的最后一个任务,我该怎么办。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    您可以使用 dependsOn、finalizedBy 和其他一些功能来更改任务执行顺序。

    例如你可以在运行 gradle build 后执行必要的任务:

    void apply(Project project) {
    
            //.. some code
    
            project.tasks.getByName('build').finalizedBy(
                project.tasks.getByName('gitFunctionality'),
                project.tasks.getByName('publishToMavenLocal')
            )
        }
    

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2014-12-02
      • 2021-12-30
      • 2016-11-10
      • 1970-01-01
      相关资源
      最近更新 更多