本篇概覽
- IDEA的遠程開發功能,可以將本地的編譯、構建、調試、運行等工作都放在遠程服務器上執行,而本地僅運行客戶端軟件進行常規的開發操作即可,官方給出的邏輯圖如下,可見通過本地的IDE和服務器上的IDE backend將本地電腦和服務器打通,實現了遠程開發的效果
- 實際體驗中,感覺就像平常的IDEA本地開發,但其實繁重的任務都交給了服務器去做,這對性能較差的本地電腦來說,以前跑不動的應用,如今憑借強大的服務器也能絲滑運行了
- 今天就來一起實戰IDEA遠程開發,讓破舊的本地電腦也能流暢的編譯運行JAVA應用
- 文章由以下幾段組成:
- 環境信息一覽
- 準備服務器
- IDEA遠程連接
- 重新設置工程的根目錄
- 端口轉發
- 其他要注意的地方
環境信息一覽
- 以下是我這邊本次實戰的環境信息,可作為參考
- IDEA:2021.3.2 (Ultimate Edition)
- 本地電腦操作系統:macOS Montery(12.3)
- 服務器:Ubuntu 20.04 LTS(4核8G)
準備服務器
- 一臺linux服務器是遠程開發必須的,自己內網的、租用云服務廠商的都可以
- IDEA會自動在服務器上安裝所需的服務,咱們無需提前準備什么,唯一要求是可以通過SSH登錄此服務器
- 欣宸的服務器是騰訊云輕應用服務器,在官網租用的,如下圖,4核8G,一年兩百多,感覺挺劃算
- 接下來要在服務器上把開發用的代碼準備好,我這里是將自己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
- 輸入IP地址,賬號密碼
- 按要求輸入密碼,遠程連接成功后,指定工作目錄(Project directory),我指定的是代碼倉庫所在目錄,然后點擊右下角的Download and Start IDE
- 遠程服務器開始下載后端應用,這是用于支持遠程開發的服務
- 等待下載完成后,就會多出一個名為JetBrains Client的應用,并且已經打開,如下圖紅框,這就是將來做遠程開發的本地工具了
- JetBrains Client界面如下,看起來像是IDEA,可以看到剛才在服務器下載的整個倉庫的內容,和在本地打開沒什么區別,Terminal打開的也是服務器目錄,修改代碼時改動的也是服務器上的代碼
- 還剩一個問題:如上圖所示,此倉庫中并不只有一個java項目,而是有幾十個文件夾,每個文件夾下都是個獨立的工程(有的是gradle,有的是maven),如果我現在只想修改其中的一個(例如上圖紅框中的quarkus-tutorials),并編譯運行它,應該怎么操作?接下來就解決此問題(這是IDEA的操作,并非遠程連接的問題)
重新設置工程的根目錄
- 接下來要解決的問題是:IDE遠程打開的文件夾里有多個工程,我只想打開其中的一個maven工程進行開發和調試
- 頂部菜單選擇"File" -> "Project structure..."
- 點擊下圖紅框位置的X符號,會刪除當前內容根目錄(Content Root)
- 點擊下圖紅框中的加號,重新添加內容根目錄(Content Root)
?
- 選擇用于開發的文件夾即可
- 選擇完畢后,終于見到熟悉的目錄結構
- 您可能會覺著這一段的操作是多此一舉:只要在遠程連接的時候設置工作目錄是quarkus-tutorials就行了,沒必要這么麻煩,您說的沒錯,在遠程連接的時候確實可以直接指定目錄,但是如果此刻使用的是Jetbrains的space,那里無法直接指定目錄,只能直接打開
作為maven工程運行
- 關于服務器的JDK,如果裝了,請按照下圖位置去選擇,如果沒有安裝,按照下圖進行遠程下載即可
- 此刻,IDE并未識別到這是個maven工程,需要打開pom.xml,然后在右鍵菜單中選擇Add as Maven Project,如下圖紅框
- 等待項目加載和更新完成后(生成索引時間較長,我這邊半小時),終于見到了熟悉的maven項目頁面,可見和用IDEA時候并無區別
- 試試maven的單元測試,如下圖,和使用IDEA并無區別,順利執行
端口轉發
- 開發web應用時,啟動應用后,訪問遠程IP地址和端口可能比較麻煩(有的服務器涉及到安全問題不輕易開端口),此時JetBrains Client提供的端口轉發功能非常實用
- 端口轉發配置方式如下圖,這樣我訪問本機的8080端口時,請求就會轉到服務器的8080端口
- 啟動應用試試,我的應用是個普通web應用,啟動后監聽8080端口,然而我并沒有給服務器開通8080端口到外網,如下圖,從本地可以訪問成功
其他要注意的地方
- 退出的時候,會提示是否關閉遠程服務,請自行選擇,我選擇的是Close and Keep Running
?
- 如果嫌每次輸入密碼麻煩,就在idea中保存起來
- 下次再打開時就會出現之前的記錄,點擊即可進入
- Git提交功能也可以正常使用:本地的提交其實是將服務器上的代碼提交到Github
- 最后別忘了去插件管理頁面安裝常用插件
- 至此,IDEA遠程開發的實際體驗已經完成,希望本文能給您一些參考,助您搭建一個穩定高性能的開發環境
原文鏈接:
https://juejin.cn/post/7089614698529685517