Java远程开发
如果你的项目需要在Linux和Windows同时开发,来回切换那可太麻烦了!
所以这里我会教大家使用远程开发,直接在自己的 Windows 电脑上操作 Linux 服务器,和之间的开发方式完全一致!
以下我们已Java为例,介绍两种远程开发的方式:远程部署和纯远程开发
远程部署
第一种远程开发方式是 远程部署,就像我们真实做项目时,先在本地用代码编辑器完成开发,再把代码放到 Linux 服务器上去部署一样。远程部署的思路是在本地编写代码,然后把本地的代码文件定期同步到 Linux 服务器,再用本地电脑操作远程服务器完成部署和运行。
这种方式更多地是为了提高将代码放到服务器部署的效率,不算是真正意义上的远程开发,但可以达到接近的效果。
远程开发主要分为 6 个阶段:编码、文件同步、运行、编译构建、部署、调试。接下来让我们以一个最简单干净的 Spring Boot 项目为例,实战上述几个操作。
1)文件同步
打开 JetBrains IDEA 开发工具,点击 Tools => Development => Configuration:
进入到如下操作界面,需要先来配置 SSH,和服务器建立连接:
回到部署界面,点击 Mappings 来配置路径映射,就是把本地电脑的文件同步到远程服务器的指定路径:
保存或重启IDEA,在右侧就能看到我们虚拟机的所有文件列表
然后点击 Tools => Development => Automatic Upload,开启自动同步:
现在,尝试在自己电脑的代码文件夹中新建一个文件,该文件就会自动同步到 Linux 虚拟机~
但目前如果你删除了自己电脑的文件,Linux 虚拟机的对应文件不会删除,所以我们还要进入 Options 配置:
至此,你在本地编写的代码都会自动同步到服务器上了。
2)运行项目
可以直接在 IDEA 的终端中快速创建一个能够远程访问远程服务器的终端:
输入 Maven 命令来运行项目:
mvn clean
mvn spring-boot:run
项目启动成功并测试接口
3)构建项目
和上面运行项目的方式相同,在自己的电脑打开终端访问远程虚拟机,然后执行 Maven 打包命令:
mvn package
4)部署项目
jave -jar xxx
4)远程调试
现在程序已经在 Linux 虚拟机上启动了,那么我们如何调试远程的程序呢?比如打断点、查看变量信息等。
首先强调一点,远程调试不要乱用,可以在开发时调试,但千万别给线上打断点!影响正常用户的访问。
开启远程调试的方法很简单,首先在 IDEA 右上角找到编辑配置:
更改配置,修改自己虚拟机的 IP、希望占用的远程调试端口、JDK 版本等,IDEA 会自动生成一段远程调试参数:
在启动项目时,给启动命令追加上述界面生成的 command line 参数,注意要加到 jar 包路径之前 。
示例命令如下:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 qoj-code-sandbox-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
此时对应的端口,可以看到 Debug 已经生效
纯远程开发
使用 IDEA 自带的远程开发功能,可以直接将本地的编译、构建、调试、运行等工作全部都放在远程服务器上执行!而本地仅运行客户端软件连接服务器,像之前一样编写代码、进行其他开发操作即可。此方法会服务器性能要求较高
如下图:
这种方式也更简单,进入 IDEA 主页,找到 SSH 选项,点击新建项目:
首次使用时,需要等待下载 JetBrains Client 客户端
服务器上也会自动安装对应的远程开发后端
然后进入远程开发:(如果进不去重启IDEA)
补充:如果运行时报错:
解决办法如下
打开设置==》Complier==>在vm potionas中添加以下一行参数,项目就可以正常运行
-Djdk.lang.Process.launchMechanism=vfork