You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle docker_deploy部署Java Web应用时出现'ssh'属性未知错误

解决Gradle任务中ssh属性找不到的问题

问题原因

你遇到的Could not get unknown property 'ssh' for task ':docker_app_start'错误,是因为自定义Gradle任务的doLast闭包默认作用域是任务实例本身,而org.hidetake.ssh插件提供的ssh扩展是挂载在Gradle的Project对象上的,直接在任务闭包里写ssh.run会找不到这个属性。

修复步骤

修改docker_app_start和docker_upload_file_to_server两个任务,将闭包里的ssh.run改为project.ssh.run,明确引用Project对象上的ssh扩展:

修改后的docker_app_start任务

task docker_app_start {
    doLast {
        println 'begin docker_app_start'

        project.ssh.run {
            session(remotes.host) {
                execute 'docker stop tomcat9', ignoreError: true
                execute 'docker run -it --rm -d ' +
                        '--name tomcat9 ' +
                        '-v /usr/deploy:/usr/local/tomcat/webapps ' +
                        '-p 80:8080 ' +
                        'tomcat:9.0'
            }
        }
    }
}

修改后的docker_upload_file_to_server任务

task docker_upload_file_to_server {
    doLast {
        println 'begin docker_upload_file_to_server'

        project.ssh.run {
            session(remotes.host) {
                remove '/usr/deploy/lab.war'
                remove '/usr/deploy/lab/'
                remove '/usr/deploy/lab5-1/'
                put from: "${project.projectDir}/build/libs/lab5-1-1.0-SNAPSHOT.war",
                        into: "/usr/deploy/lab.war"
            }
        }
    }
}

额外检查项

确保你已在build.gradle中正确配置服务器远程连接信息,示例如下:

remotes {
    host {
        host = '你的服务器IP/域名'
        user = 'SSH登录用户名'
        // 可选:密码认证或密钥认证二选一
        password = '你的登录密码'
        // identity = file('~/.ssh/id_rsa') // 密钥文件路径
    }
}

内容的提问来源于stack exchange,提问作者Huynh Thang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:03:24