IntelliJ IDEA的遠程開發功能,可以將編譯和運行等消耗資源任務放在伺服器上執行,降低本地電腦負載,但是體驗上和之前的IDEA操作保持一致,破舊的老機器也能煥發青春 ...
歡迎訪問我的GitHub
這裡分類和彙總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos
本篇概覽
- 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遠程開發的實際體驗已經完成,希望本文能給您一些參考,助您搭建一個穩定高性能的開發環境