试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误:
无法应用插件[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]的方法文件()。
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如下(无错误)