體驗IntelliJ IDEA的遠端開發(Remote Development)

2023-07-29 12:00:47

歡迎存取我的GitHub

這裡分類和彙總了欣宸的全部原創(含配套原始碼):https://github.com/zq2599/blog_demos

本篇概覽

  • IDEA的遠端開發功能,可以將原生的編譯、構建、偵錯、執行等工作都放在遠端伺服器上執行,而本地僅執行使用者端軟體進行常規的開發操作即可,官方給出的邏輯圖如下,可見通過原生的IDE和伺服器上的IDE backend將本地電腦和伺服器打通,實現了遠端開發的效果

  • 實際體驗中,感覺就像平常的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,一年兩百多,感覺挺划算

  • 接下來要在伺服器上把開發用的程式碼準備好,我這裡是將自己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遠端開發的實際體驗已經完成,希望本文能給您一些參考,助您搭建一個穩定高效能的開發環境

歡迎關注部落格園:程式設計師欣宸

學習路上,你不孤單,欣宸原創一路相伴...