对于 Java 开发来说,得益于 Java 的跨平台,本地和服务器上运行,基本上不会有什么大问题,但是难免还是会有绑定指定平台的事,或者需要特定平台的软件,这时候 Idea 的远程运行就很有帮助了。
就比如我目前正在开发的一个功能,我需要用 Java 来管理 Docker,就必然需要 Linux 了,当然 Windows 的 WSL 也行,这时候 Idea 的远程运行就很有用。
![image.png](https://thetbw-hk.cos.thetbw.xyz/blog/image_1722607027657.png)
可以运行的平台主要还是 Linux 相关,同时还有 Windows 的 WSL。
开发过程中偶尔还需要进行内网穿透,比如微信支付这种测试,或者和自己其他已经测试部署的项目对接,在本地就行开发,直接推送到有公网 Ip 的机子去运行也是一个不错的选择,省的去开内网穿透。
Idea 这个也算是简单粗暴,把当前 Class 都编译好后,默认是通过 Sftp 发送到对应服务器,然后在对应服务器上运行。
第一次运行需要发送好多依赖过去,实在的慢的很,这就算了,后面每次运行,都需要全都重新发一遍。
![image.png](https://thetbw-hk.cos.thetbw.xyz/blog/image_1722607481032.png)
Idea 也给出了解决办法,在远程服务器中。使用 Rsync 可以大幅减少使用时间,只有第一次是全量同步,后续 Rsync 会比对差异,只同步变动的文件。
Rsync 是 Linux 上的一个工具,有些 Linux 发行版也是自带了这个工具,最近我的各种折腾,也少不了这个工具,是我目前感觉是 Linux 文件同步/复制/移动方面最简单强大的工具了。
Windows 上如果需要使用这个工具,需要安装 [cygwin](https://www.cygwin.com/) ,这个软件将 Linux 的很多工具移植到了Windows , 包括 Rsync 。
> 如果你在 Idea 设置 Rsync 之后发现有问题需要更改,请到Settings>Tools>Rsync
这里直接给下配置内容
![image.png](https://thetbw-hk.cos.thetbw.xyz/blog/image_1722607819033.png)
其实这种配置还是有问题的,由于 Windows 和 Linux 目录分隔符的问题,导致Rsync 同步的时候会把 Windows 的路径算成一个目录,
比如 Window `traget\class` 就是两个父子目录,Rsync 同步过去就是一个叫
`"traget\class"` 的目录,导致最后找不到 Class.
这里给出的解决办法就是 Rsync 同级建立个 `bat` 文件,为下面内容,把原先的命令换成下面这个
```bat
@path C:\cygwin64\bin
@sed -i 's:\\:\/:g' fileList.txt 2>nul
@rsync %*
```
![image.png](https://thetbw-hk.cos.thetbw.xyz/blog/image_1722608838952.png)
> 如图所示
现在就可以愉快的玩耍了!
---
相关内容
* https://www.jetbrains.com/help/idea/2023.1/settings-tools-rsync.html?reference.settings.tools.rsync
* https://www.cygwin.com/
* https://youtrack.jetbrains.com/issue/IJPL-62541/Run-Targets-cant-run-JUnit-RC-on-ssh-target-with-rsync-on-Windows
idea 项目远程运行调试