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

分级自定义插件任务

包修贤
2023-03-14

试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误:

无法应用插件[id为“Code4Reference”]

package libs.gradle;

import org.gradle.api.*;

apply plugin: NewPlugin

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

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

class printTask extends DefaultTask {
    @TaskAction
    def showMessage() {
        println '------------showMessage-------------------'
    }
}
implementation-class=libs.gradle.NewPlugin

更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔:

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]的方法文件()。

共有1个答案

傅涵忍
2023-03-14
ext.signfiles = project.fileTree(dir: "$workdir").matching{ include 'build/**/*.rpm' }

但不确定workdir是什么。下面的exec也应该是

project.exec {
                    commandLine 'bash', '-c', "$args"
                }
 类似资料:
  • 是否有一种不同的方式来接收价值?

  • 例如,我有一个插件:公共类PluginA实现plugin。 我会创建一个任务塔斯卡。现在我想设置:taska.dependson taskB,但是taskB是在pluginb中定义的。 有没有可能做到这一点,如果可以,如何做到?

  • https://docs.gradle.org/current/userguide/custom_tasks.html 如何使此任务在执行阶段运行?正在传递一个空闭包 唯一的解决办法? 但是hello任务似乎是在构建的配置阶段调用的。

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

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

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