Gradle自定义插件任务

问题描述 投票:1回答:1

试图了解如何创建自定义插件。但我不能让我的新任务奏效。我收到此错误:

无法应用插件[id'code4reference']

没有这样的属性:类的printTask:libs.gradle.NewPlugin

但是当我从NewPlugin类运行println时它正在工作。有两个groovy文件,一个用于插件初始化,一个用于任务。他们位于:

/home/boilerplate/boilerplate/双人床/卖弄/groovy/礼拜四/grad了/build.groovy

package libs.gradle;

import org.gradle.api.*;

apply plugin: NewPlugin

class NewPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.task('myTask', type: printTask)
    }
}

/home/boilerplate/boilerplate/双人床/卖弄/groovy/礼拜四/grad了/print task.groovy

package libs.gradle;

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class printTask extends DefaultTask {
    @TaskAction
    def showMessage() {
        println '------------showMessage-------------------'
    }
}

执行:

/home/boilerplate/boilerplate/双人床/卖弄/resources/meta-inf/grad了-plugins/code4reference.properties

implementation-class=libs.gradle.NewPlugin

更新:现在我在执行新任务时面临另一个问题,该任务应该对路径中找到的所有RPM进行签名。我知道在build.gradle中这很好用:

package libs.gradle;

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class Sign extends DefaultTask {
    def workdir = project.projectDir.getPath()
    @TaskAction
    def showMessage() {
        ext.signfiles = files{
            fileTree(dir: "$workdir").matching{ include 'build/**/*.rpm' }
        }
        doLast {
            signfiles.each{ File file->
                def args = /echo -e "spawn rpm --resign ${file}\nexpect \"Enter pass phrase:\"\nsend \"\\r\"\nexpect" | expect/
                        exec {
                    commandLine 'bash', '-c', "$args"
                }
            }
        }
    }
}

无法在类型为libs.gradle.Sign的任务':myTask'上找到参数[libs.gradle.Sign$_showMessage_closure1@4bf8b77]的方法文件()。

gradle groovy
1个回答
0
投票
ext.signfiles = project.fileTree(dir: "$workdir").matching{ include 'build/**/*.rpm' }

但不确定workdir是什么。下面的执行官也应该是

project.exec {
                    commandLine 'bash', '-c', "$args"
                }
© www.soinside.com 2019 - 2024. All rights reserved.