【IDEA】IntelliJ IDEA远程开发:释放本地设备,打破资源与环境的限制

news/2024/11/8 19:05:05/文章来源:https://www.cnblogs.com/o-O-oO/p/18535704

IDEA的远程开发 (Remote Development) 是指在不依赖于本地计算资源的情况下,通过连接远程服务器或虚拟机来进行代码编写、调试和构建的开发模式。这种方式主要通过 JetBrains Gateway JetBrains Projector 提供支持,可以在本地 IDE 界面与远程环境紧密协作,帮助开发者解决资源限制和环境一致性等问题。

当然,不仅限于IDEA,JetBrains旗下的多数开发工具均已支持远程开发功能。对于其他工具,您可以根据本文提供的方法进行尝试和探索,其基本逻辑是相通的。

应用场景

1. 高资源需求的项目:对于大型项目或需要大量资源的开发任务,使用本地计算可能导致性能瓶颈。通过远程开发,开发者可以将计算密集型任务交给性能强大的远程服务器。2. 跨平台开发:有些项目需要在特定的操作系统上运行,比如 Linux 系统上的项目。使用 IDEA 的远程开发功能,开发者可以在本地 Windows 或 macOS 设备上编写代码,但在远程的 Linux 环境中运行和调试程序。3. 分布式团队:开发团队分布在不同地区,利用远程开发功能可以让开发者在统一的开发环境中协作,减少由于环境不一致带来的问题。4. 灵活的工作场所:无论在公司、家里还是其他地方,开发者只需要稳定的网络连接,就可以在远程的强大服务器上开展工作,适应不同的工作场景。

远程开发优势

1. 资源节省:本地设备不再需要处理繁重的编译、测试和调试任务,从而减少了对本地硬件资源的消耗。你可以用轻量级的设备连接到远程服务器,而在远程服务器上运行大型或复杂项目。2. 一致的开发环境:通过在远程服务器上设置标准化的开发环境,可以避免开发者在不同操作系统或配置上的环境差异。这对于调试依赖特定环境的项目尤其有帮助。3. 提高开发效率:远程开发将本地开发中的计算压力转移到远程的高性能服务器上,通常可以大幅减少项目构建和测试的时间,提升整体开发速度。4. 跨平台开发便利性:如果需要在不同操作系统之间进行开发,远程开发可以让你轻松在本地环境下使用远程系统的资源,无需在本地切换操作系统或安装虚拟机。5. 增强的协作能力:通过统一的远程环境,团队成员可以更加容易地共享环境设置、代码库和调试信息,减少了版本和环境不一致带来的麻烦。

如何实现远程开发

进入远程开发Remote Development

选择远程开发方式

可以通过两种方式实现远程开发:

  1. 通过 SSH

  2. 通过 Dev Containers

这里我们选择Dev Container的方式介绍,因为SSH方式比较简单,会了Dev Containers也基本就会了SSH,SSH方式基本就是通过SSH连接后,基础环境我们在远程服务器配置好就可以用了。

配置SSH代理转发

默认情况下,本地电脑上已经配置了 SSH 密钥以便访问 Git 项目,但容器中没有这些权限。因此,我们需要配置 SSH 代理转发,将本地权限传递给远程容器。

首先,通过以下命令检查密钥是否对 ssh-agent 可见:

$ ssh-add -L
# 示例输出
ssh-ed25519 AAAAC3XXXXXD3DEoFT2Qr3fWu9MY 

如果显示没有身份信息,则可以通过以下命令添加密钥:

ssh-add  ~/.ssh/id_ed25519

验证配置的是否代理转发是否生效:

可以通过 SSH 连接远程服务器并执行以下命令进行验证:

# 连接目标服务器
$ ssh root@172.16.24.225
# 验证密钥转发是否成功
$ ssh -T git@github.com
# 若显示以下内容,则表示成功:
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

更多有关 SSH 代理转发的配置信息,可以参考:(https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/using-ssh-agent-forwarding#testing-ssh-agent-forwarding)

通过 Dev Container 创建开发容器

注意:远程机器需要预装 Docker 并已运行。

创建开发容器:

新增 Docker 配置,选择通过 SSH 连接远程服务器:

选择项目配置:

说明:

• Automatic:自动从项目中获取配置

• Specify Path:手动指定配置文件路径

配置完成后,点击右下角的Build Container and Continue

配置远程 Dev Container 的基础环境,选择合适的开发环境,如 Java 8 + Maven,点击 OK。

可能存在的问题:如果出现无法下载的问题,可以将无法下载的镜像通过阿里云手动下载镜像,具体步骤如下:

  1. 通过GitHub将镜像同步到阿里云。具体方法参考:Docker国内镜像源失效解决方案!亲测有效

  2. 手动下载镜像

docker pull registry.cn-hangzhou.aliyuncs.com/jast-docker/git:v2.34.2

将镜像tag修改为alpine/git:v2.34.2

docker tag registry.cn-hangzhou.aliyuncs.com/jast-docker/git:v2.34.2 alpine/git:v2.34.2

重试,等待所有环境拉取完成。

首次完成后,需安装EAP:

安装完成后会自动打开Intellij IDEA EAP,这个是用于连接远程项目的客户端。

我们可以看到这个页面和Intellij IDEA几乎一样,我们就可以在这里进行开发代码、调试代码、提交代码到Git等等一系列操作,它与我们平时开发一样了。此外,还可以查看远程机器的资源使用情况。

最后推荐一个官方提供的体验Demo:https://github.com/IdeaUJetBrains/idea-demo-devcontainers

原创 编程与架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828965.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有哪些免费的轻量级在线 CRM 系统?6款CRM系统盘点

对于许多中小型企业和初创公司而言,如何选择一款既能满足日常需求又具性价比的CRM系统很重要。通常来说,系统的成本是企业选型过程中不可忽视的因素,但在这么多的CRM系统中,各类CRM系统的功能与价格对比真的很容易让人眼花缭乱。 本文将盘6款值得关注的免费轻量级在线CRM系…

[极客大挑战 2019]PHP 1

[极客大挑战 2019]PHP 1 打开文件发现提示信息“备份文件”,查看源码并未发现其他有效信息采用dirsearch爆破目录,找到www.zip文件解压zip,发现是源码泄露提交flag,发现不正确,看到index.php源码中有Get传参,然后反序列化函数unserialize(),判断为反序列化漏洞;查看class…

【IDEA】告别繁琐反编译:IDEA中轻松反编译与修改Jar包

本文带你了解 JarEditor 插件的强大功能,它让你无语再用其他第三方工具,也无需解压 JAR 文件就能直接在IDEA中编辑其中的类和资源文件。还能用它轻松添加、删除或重命名 JAR 包里的文件。即使遇到混淆过的 JAR,JarEditor 也能通过 Javassist 工具搞定。 支持的功能 JarEdito…

[极客大挑战 2019]BuyFlag 1

[极客大挑战 2019]BuyFlag 1 打开实例发现pay.php页面,有提示信息打开源码发现password post提交逻辑burpsuite抓包传参,传入money和password参数,这里password是==弱比较,所以加个字符就可以绕过 password=404a&money=100000000回显发现并没有变化 注意到学生需要CUIT(…

写什么代码来清空缓冲区

在 C++ 中,清空输入缓冲区的方法主要用于清除 std::cin 输入流中的残留字符,避免它们影响后续的输入操作。下面介绍几种常用的办法。 1. cin.ignore() 方法 cin.ignore() 是最常用的清空缓冲区方法,可以忽略输入流中的若干字符。cin.ignore(numeric_limits<streamsize>…

[ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 打开实例,显示Try to find out source file!(尝试找出源文件!)dirsearch扫描,发现flag页面以及备份文件泄露wget下载并打开index.php.bak,发现flag.php的源码这边要求参数key为数值的同时又要==123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w…

【架构】异地多活架构设计

一、关于基础架构二、关于异地多活三、写时延是关键3.1 核心在于数据层的写操作3.2 写时延在跨城时发生质变3.3 同步复制缩短距离降目标3.4 异步复制就近分片做有损四、写量大拆分片五、做隔离拆分片六、其他影响因素6.1 读时延可就近6.2 读量大扩副本6.3 连接多加代理七、数据…

1.11--04:网线主管

http://noi.openjudge.cn/ch0111/04/网线主管 思路题目要求保留小数点后两位,说明啥,如果我们要循环找答案,每次只能+0.01,不然容易错过答案,看这个数据范围,一看就炸了考虑到二分怎么分?众所周知,二分的前提条件是内容必须有一定的规律如果当前导线和除以中间长度(我们…

【MySQL】数据库备份详解

一、引言1.1 数据库备份的重要性二、MySQL数据库备份的基础知识2.1 备份类型2.2 备份工具与方法三、MySQL数据库备份的实施步骤3.1 环境准备3.2 选择合适的备份工具与方法3.3 执行备份3.4 验证备份3.5 存储与管理备份四、MySQL数据库恢复流程4.1 mysqldump备份的恢复4.2 物理备…

关于虚拟仿真云实验教学_解决方案及优势介绍!

在科技飞速演进的潮流下,虚拟仿真技术正不断蓬勃发展,成为教育领域的一颗耀眼之星。作为创新的教育手段,虚拟仿真云教学正逐渐受到越来越多教育机构的高度重视与广泛应用,本文将为您详细探讨虚拟仿真云实验教学的解决方案及其所带来的多重优势。在科技飞速演进的潮流下,虚…