IntelliJ-IDEA将代码部署到远程主机
https://www.jetbrains.com/help/idea/tutorial-deployment-in-product.html
使用Win11的sftp命令
在 Windows 需要传输文件的目录下打开 cmd,然后执行:
1 |
|
使用idea的sftp部署



https://www.jetbrains.com/help/idea/tutorial-deployment-in-product.html
在 Windows 需要传输文件的目录下打开 cmd,然后执行:
1 |
|



在 JetBrains 的远程开发体系中,remote-dev-server.sh 是运行在远程服务器上的核心脚本。
1 | root@localhost:/# ./remote-dev-server help |
常用子命令说明(官方)
| 命令 | 功能说明 |
|---|---|
status |
查看 remote-dev-server 当前状态 |
remoteDevStatus |
检查是否有远程开发实例正在运行 |
run |
启动远程开发实例(最常用) |
stop |
停止当前远程开发会话 |
warm-up /path/to/project |
预热索引(构建缓存) |
invalidate-caches |
清理缓存 |
serverMode |
启动后台模式(长期监听 Gateway 连接) |
registerBackendLocationForGateway |
为 Gateway 注册本地 IDE 位置 |
installPlugins |
安装插件(离线部署常用) |
registerBackendLocationForGateway 命令用于将远端主机上已经解压/安装的 IDE 后端路径注册到 JetBrains Gateway 的“可用后端/构建”列表,使 Gateway 能发现并显示该已安装的后端 IDE(而不是让 Gateway 从网络下载它)。
1 | ./remote-dev-server.sh registerBackendLocationForGateway |
角色:服务器端的启动脚本 / 后端服务(而非本地客户端)。
功能:启动并托管 IDE 后端(文件访问、索引、语言服务、运行/调试后端等)。
连接方式:由 JetBrains Gateway 或受支持的客户端发起连接到该后端。
目的:让本地 IDE 能够远程编辑、运行和调试项目,保持一致的开发体验。
(补充说明:它是服务器端的会话/代理组件,不是本地 IDE 本身。)
1 | mkdir -p /logs/remote-dev-server |
https://www.jetbrains.com/zh-cn/help/idea/remote-development-starting-page.html
https://www.jetbrains.com/help/idea/faq-about-remote-development.html
IDEA 远程调试,像运行本地代码一样调试远程主机上的程序,以排查远程程序的BUG或代码执行流程。
原理:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。 被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。 调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。
Run -> Edit Configurations...,打开 Run/Debug Configurations 窗口;+ 按钮,下拉菜单中选择 Remote ;Command line arguments for remote JVM, 形如 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005,具体参数内容由 JDK 版本决定。对于 SpringBoot: 命令行添加选项,并重启:
1 | # 注意新参数必须在 -jar 之前 |
对于 Tomcat: 启动脚本中添加选项,并重启:
1 | # sudo vim $CATALINA_HOME/bin/catalina.sh |
1 | # sudo vim /etc/sysconfig/iptables |
Connected to the target VM, address: 'localhost:5005', transport: 'socket'服务器上多开放个端口是不安全的,调试完毕后可恢复防火墙设置。 而 Java 服务器开启 Debug 服务器的功能可以保留,以便之后再次调试。
1、细节1:停在本地断点,关闭程序后会继续执行吗 如果远程调试在自己的断点处停下来了,此时关闭IDEA中的项目停止运行,则还会继续运行执行完剩下的逻辑吗? 会的,这点比较不容易记住
以下面的代码为例,在第一行停住了。然后IDEA中停掉,发现停掉之后控制台还是打印了剩下的日志。 2、细节2:jar包代码和本地不一致会怎么样? IDEA 里的代码如果不和jar包的一致,会怎么样。
结论:要保证和远程启动的代码一致。
否则你debug的时候的行数会对不上。报错抛异常倒是不会。像这种还是能对得上行数的
比如你调试test1方法,test2方法在test1下面,在test2里加代码,这样并不影响test1中的行号,这种是可以在调试的时候准确反应行号的 3、细节3:日志打印在哪里? 日志不会打印在IDEA的控制台上。即System.out 以及 log.info 还是打印在远程的。
1 | @GetMapping("/test1") |
4、细节4:调试时其他人会不会卡住? 远程调试的时候,打了断点,停住后会不会导致页面的请求卡住。 比如你使用远程调试,别的QA在测试这个页面,结果他们看到的结果是怎么样的? 会卡住吗?会的,已经实际遇到过这种情况了。
5、细节5:本地代码修复bug远程调用的时候 如果在远程调试过程自己发现了bug,本地改好后重新启动IDEA里的项目,再到页面调用一次,能修复吗? 不能,运行的还是远程部署的jar中的代码
这个直接击碎了远程页面点一点触发本地代码进行debug的梦想。如果可以的话那调试代码就方便太多。
6、细节6:当开发者计算机无权访问数据库时,可使用远程调试查看数据处理过程
官方链接:
下载: https://www.jetbrains.com/idea/download/other.html
文档: 官方帮助文档
idea 没有工作空间的概念;eclipse 每新建一个工作空间,都需要对该工作空间下的工程重新设置。