您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

时间:2022-05-13 11:21:52  来源:掘金  作者:秃头Java人

本篇概览

  • IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见通过本地的IDE和服务器上的IDE backend将本地电脑和服务器打通,实现了远程开发的效果
IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 实际体验中,感觉就像平常的IDEA本地开发,但其实繁重的任务都交给了服务器去做,这对性能较差的本地电脑来说,以前跑不动的应用,如今凭借强大的服务器也能丝滑运行了
  • 今天就来一起实战IDEA远程开发,让破旧的本地电脑也能流畅的编译运行JAVA应用
  • 文章由以下几段组成:
  1. 环境信息一览
  2. 准备服务器
  3. IDEA远程连接
  4. 重新设置工程的根目录
  5. 端口转发
  6. 其他要注意的地方

环境信息一览

  • 以下是我这边本次实战的环境信息,可作为参考
  1. IDEA:2021.3.2 (Ultimate Edition)
  2. 本地电脑操作系统:macOS Montery(12.3)
  3. 服务器:Ubuntu 20.04 LTS(4核8G)

准备服务器

  • 一台linux服务器是远程开发必须的,自己内网的、租用云服务厂商的都可以
  • IDEA会自动在服务器上安装所需的服务,咱们无需提前准备什么,唯一要求是可以通过SSH登录此服务器
  • 欣宸的服务器是腾讯云轻应用服务器,在官网租用的,如下图,4核8G,一年两百多,感觉挺划算

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 接下来要在服务器上把开发用的代码准备好,我这里是将自己github仓库下载到服务器上,代码存放在这里:/home/ubuntu/jetbrains-workspace
ubuntu@VM-12-12-ubuntu:~/jetbrains-workspace$ git clone https://github.com/zq2599/blog_demos.git
Cloning into 'blog_demos'...
remote: Enumerating objects: 14559, done.
remote: Counting objects: 100% (1097/1097), done.
remote: Compressing objects: 100% (350/350), done.
remote: Total 14559 (delta 846), reused 818 (delta 703), pack-reused 13462
Receiving objects: 100% (14559/14559), 110.29 MiB | 3.05 MiB/s, done.
Resolving deltas: 100% (4714/4714), done.
复制代码

IDEA创建远程连接

  • 服务器端准备完毕后,可以开始本地电脑的远程连接操作了
  • 打开IDEA,如下图,选择New Connection

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

 

  • 输入IP地址,账号密码

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 按要求输入密码,远程连接成功后,指定工作目录(Project directory),我指定的是代码仓库所在目录,然后点击右下角的Download and Start IDE

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 远程服务器开始下载后端应用,这是用于支持远程开发的服务

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 等待下载完成后,就会多出一个名为JetBrains Client的应用,并且已经打开,如下图红框,这就是将来做远程开发的本地工具了

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • JetBrains Client界面如下,看起来像是IDEA,可以看到刚才在服务器下载的整个仓库的内容,和在本地打开没什么区别,Terminal打开的也是服务器目录,修改代码时改动的也是服务器上的代码

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 还剩一个问题:如上图所示,此仓库中并不只有一个java项目,而是有几十个文件夹,每个文件夹下都是个独立的工程(有的是gradle,有的是maven),如果我现在只想修改其中的一个(例如上图红框中的quarkus-tutorials),并编译运行它,应该怎么操作?接下来就解决此问题(这是IDEA的操作,并非远程连接的问题)

重新设置工程的根目录

  • 接下来要解决的问题是:IDE远程打开的文件夹里有多个工程,我只想打开其中的一个maven工程进行开发和调试
  • 顶部菜单选择"File" -> "Project structure..."

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 点击下图红框位置的X符号,会删除当前内容根目录(Content Root)

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 点击下图红框中的加号,重新添加内容根目录(Content Root)

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 选择用于开发的文件夹即可

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 选择完毕后,终于见到熟悉的目录结构

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 您可能会觉着这一段的操作是多此一举:只要在远程连接的时候设置工作目录是quarkus-tutorials就行了,没必要这么麻烦,您说的没错,在远程连接的时候确实可以直接指定目录,但是如果此刻使用的是Jetbrains的space,那里无法直接指定目录,只能直接打开

作为maven工程运行

  • 关于服务器的JDK,如果装了,请按照下图位置去选择,如果没有安装,按照下图进行远程下载即可

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 此刻,IDE并未识别到这是个maven工程,需要打开pom.xml,然后在右键菜单中选择Add as Maven Project,如下图红框

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 等待项目加载和更新完成后(生成索引时间较长,我这边半小时),终于见到了熟悉的maven项目页面,可见和用IDEA时候并无区别
  • 试试maven的单元测试,如下图,和使用IDEA并无区别,顺利执行

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

端口转发

  • 开发web应用时,启动应用后,访问远程IP地址和端口可能比较麻烦(有的服务器涉及到安全问题不轻易开端口),此时JetBrains Client提供的端口转发功能非常实用
  • 端口转发配置方式如下图,这样我访问本机的8080端口时,请求就会转到服务器的8080端口

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 启动应用试试,我的应用是个普通web应用,启动后监听8080端口,然而我并没有给服务器开通8080端口到外网,如下图,从本地可以访问成功

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

其他要注意的地方

  • 退出的时候,会提示是否关闭远程服务,请自行选择,我选择的是Close and Keep Running

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 如果嫌每次输入密码麻烦,就在idea中保存起来

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 下次再打开时就会出现之前的记录,点击即可进入

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • Git提交功能也可以正常使用:本地的提交其实是将服务器上的代码提交到Github

 

IntelliJ IDEA的远程开发功能,强到老板看完了直呼:“真省钱”

 

  • 最后别忘了去插件管理页面安装常用插件
  • 至此,IDEA远程开发的实际体验已经完成,希望本文能给您一些参考,助您搭建一个稳定高性能的开发环境

原文链接:
https://juejin.cn/post/7089614698529685517



Tags:IntelliJ IDEA   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本篇概览 IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见通...【详细内容】
2022-05-13  Tags: IntelliJ IDEA  点击:(0)  评论:(0)  加入收藏
如果你的 IntelliJ IDEA 在调试的时候越来越慢,那么时候需要增加 IntelliJ IDEA 使用的内存了。通过 Help | Edit Custom VM Options 路径来打开 VM 的选项。 IJ 将会使用自...【详细内容】
2022-05-06  Tags: IntelliJ IDEA  点击:(11)  评论:(0)  加入收藏
一、概述毋庸置疑 IntelliJ IDEA 已经成为 Java 开发最好用的开发工具,这篇文章主要记录自己使用 idea 开发过程中的一些常用配置,主要是根据自己的开发习惯进行的配置,记录这...【详细内容】
2021-05-24  Tags: IntelliJ IDEA  点击:(290)  评论:(0)  加入收藏
前言程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是。后来我遇到了IDEA,从此是它,余生都是它。IDEA 毫无疑问是目前最强大的Java开发工具了,但是...【详细内容】
2021-04-06  Tags: IntelliJ IDEA  点击:(293)  评论:(0)  加入收藏
IDEA是什么? IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重...【详细内容】
2020-07-23  Tags: IntelliJ IDEA  点击:(60)  评论:(0)  加入收藏
有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windows还是Linux,Java还是C#;谁更强大:Chuck Norris还是Van Damme。...【详细内容】
2019-12-09  Tags: IntelliJ IDEA  点击:(94)  评论:(0)  加入收藏
刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改tab的显示的数量和行数,打开项目方式,等等一大...【详细内容】
2019-11-01  Tags: IntelliJ IDEA  点击:(137)  评论:(0)  加入收藏
▌简易百科推荐
本篇概览 IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见通...【详细内容】
2022-05-13  秃头Java人  掘金  Tags:IntelliJ IDEA   点击:(0)  评论:(0)  加入收藏
最近开发某应用的PC端后台管理时,突然对登录页面的账号密码还有图片识字验证码感到厌烦了,不仅填写麻烦,要记账号密码也麻烦。为什么不尝试用微信扫码登录呢?功能实现后,我整理出...【详细内容】
2022-05-12  全栈码农老林    Tags:扫码登录   点击:(1)  评论:(0)  加入收藏
代码是如何控制硬件的? 敲入代码,其实就是通过键盘敲入高低电平,虽然之间经过了好几轮抽象和转换。程序本身就是高低电平的组合;它通过在CPU上执行来模拟各种决策过程;同时,计算机...【详细内容】
2022-05-11  华师傅送代码    Tags:代码   点击:(8)  评论:(0)  加入收藏
一、简介在上一篇文章中,我们详细的介绍了RestTemplate工具类的用法,相比直接使用Apache的HttpClient进行网络传输,采用RestTemplate开发代码确实简化了很多,甚至可以做到傻瓜式...【详细内容】
2022-05-11  DNF搬砖摸金达人    Tags:工具类   点击:(7)  评论:(0)  加入收藏
目前好多开发项目,代码不做版本控制,代码库混乱,那么如何让代码管理更简单高效? GitLab是基于web的Git仓库,GitLab的优点:1、允许免费设置仓库权限;2、允许用户选择分享一个project...【详细内容】
2022-05-10  CoCode软件众包    Tags:代码   点击:(7)  评论:(0)  加入收藏
最近看了下关于分布式限流的部分,看到Sentinel的分布式限流,也就是集群限流的部分,想搭个环境看看,结果发现网上关于这方面的内容基本可以说没有,你甚至很难跑起来他的demo,就算能...【详细内容】
2022-05-10  艾小仙  微信公众号  Tags:Sentinel   点击:(7)  评论:(0)  加入收藏
以前公司的一个项目代码,从2014年一直存活到了2021年,目前应该还在被使用。整个代码将近2G,git文件极大,其中很大的一个原因是代码里存放过apk文件。如此大的项目,导致下载、发布...【详细内容】
2022-05-09  程序员麻辣烫    Tags:Git   点击:(9)  评论:(0)  加入收藏
背景相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化...【详细内容】
2022-05-07  司空玄    Tags:Lombok   点击:(11)  评论:(0)  加入收藏
Ajax 是大多数 web 应用程序背后的核心技术,它允许页面向 web 服务发出异步请求,因此数据可以不经过页面往返服务器无刷新显示数据。术语 Ajax 不是一种技术,相反,它指的是从客...【详细内容】
2022-05-06  Mason程    Tags:Ajax   点击:(16)  评论:(0)  加入收藏
1. 为什么需要锁在并发场景下,多个进程/线程同时对同一个资源进行访问时,会产生冲突。 举个例子:核酸采样时,如果一次100个人同时要求大白进行采样(并发),那么大白就要崩溃了,所以必...【详细内容】
2022-05-06  邬小明    Tags:分布式锁   点击:(7)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条