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
相关产品推荐
相关产品推荐

