小结:我想写一个gradle任务,它依赖于一个插件。我特别想使用pluginorg。希德塔克。ssh
用于我的部署任务
我有以下项目结构
build.gradle
settings.gradle
some-modules/
|-- src/...
buildSrc/
|-- src/
|-- |-- main/groovy/package/DeployTask
|-- build.gradle
在我的主要身材中。gradle我导入插件并定义任务:build。渐变
plugins {
id 'idea'
id 'org.hidetake.ssh' version '2.10.1'
}
...
remotes {
dev {
host = findProperty("server.dev.host")
user = findProperty("server.dev.user")
identity = file(findProperty("server.dev.identity_file") ?: "${System.properties['user.home']}/.ssh/id_rsa")
}
}
import org.irrigation.gradle.DeployTask
task deploy(type: DeployTask) {
description = "Deploys to Server"
}
在buildSrc/src/main/package/DeployTask
中,我定义了它:
class DeployTask extends DefaultTask {
@Input
@Option(option = "env", description = "Configures the environment to be used")
String environment = "dev";
@Input
@Option(option = "branch", description = "Configures the branch which should be deployed")
String branch = "master";
@TaskAction
void deploy() {
ssh.run {
session(ssh.remotes[environment]) {
execute "echo test"
}
}
}
}
我显然收到了错误信息:
Execution failed for task ':deploy'.
> Could not get unknown property 'ssh' for task ':deploy' of type org.irrigation.gradle.DeployTask.
问题是,我可以(但不想)在mainbuild中编写任务。渐变
如下(无错误)
task deploy(type: DeployTask) {
doLast {
ssh.run {
session(ssh.remotes[environment]) {
execute "echo test"
}
}
}
}
ssh
已注册为项目的扩展:https://github.com/int128/gradle-ssh-plugin/blob/master/gradle-ssh-plugin/core/src/main/groovy/org/hidetake/gradle/ssh/plugin/SshPlugin.groovy#L20
所以你需要在你的任务中引用扩展,就像这样(未经测试):
@TaskAction
void deploy() {
doLast {
getProject().getExtensions().getByType(Service.class).run {
}
}
}
我有个小问题。 我创建了自定义gradle插件(独立插件),并将它从mavenlocal包含在我的简单项目中。它正在工作,但我不知道如何在我的插件中设置系统属性。更多细节:在我的插件中,在任务中,我想设置系统属性(system.setproperty(key,value))并从我的主应用程序中获取它的属性,例如在main类main方法中,但main方法不使用此属性 当我在构建中创建任务时。grad
如何将属性传递给gradle自定义任务?在ant中,它将如下所示: 在格拉德尔怎么做? 属性名称和版本是必需的,用户需要将它们传递给任务。
例如,我有一个插件:公共类PluginA实现plugin。 我会创建一个任务塔斯卡。现在我想设置:taska.dependson taskB,但是taskB是在pluginb中定义的。 有没有可能做到这一点,如果可以,如何做到?
试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b
我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,
我创建了一个gradle插件(简称testinfra),它在编译时和运行时依赖于其他两个jar。这是我的版本。我的插件的gradle: 我能够将我的插件罐子推向人工制品。但是当我想使用插件时,我必须指定插件的GAV及其依赖项。见下文: 我的要求是避免指定依赖罐的GAV以及测试插件GAV。有没有办法在发布期间配置我的pom.xml(发布任务),这样当我指定插件的GAV时,gradle会识别依赖项并下