體驗(yàn)IntelliJ IDEA的遠(yuǎn)程開發(fā)(Remote Development)
作者:程序員欣宸 
  今天就來(lái)一起實(shí)戰(zhàn)IDEA遠(yuǎn)程開發(fā),讓破舊的本地電腦也能流暢的編譯運(yùn)行Java應(yīng)用。
 
本篇概覽
- IDEA的遠(yuǎn)程開發(fā)功能,可以將本地的編譯、構(gòu)建、調(diào)試、運(yùn)行等工作都放在遠(yuǎn)程服務(wù)器上執(zhí)行,而本地僅運(yùn)行客戶端軟件進(jìn)行常規(guī)的開發(fā)操作即可,官方給出的邏輯圖如下,可見通過本地的IDE和服務(wù)器上的IDE backend將本地電腦和服務(wù)器打通,實(shí)現(xiàn)了遠(yuǎn)程開發(fā)的效果。
 

- 實(shí)際體驗(yàn)中,感覺就像平常的IDEA本地開發(fā),但其實(shí)繁重的任務(wù)都交給了服務(wù)器去做,這對(duì)性能較差的本地電腦來(lái)說,以前跑不動(dòng)的應(yīng)用,如今憑借強(qiáng)大的服務(wù)器也能絲滑運(yùn)行了。
 - 今天就來(lái)一起實(shí)戰(zhàn)IDEA遠(yuǎn)程開發(fā),讓破舊的本地電腦也能流暢的編譯運(yùn)行Java應(yīng)用。
 - 文章由以下幾段組成。
 
- 環(huán)境信息一覽
 - 準(zhǔn)備服務(wù)器
 - IDEA遠(yuǎn)程連接
 - 重新設(shè)置工程的根目錄
 - 端口轉(zhuǎn)發(fā)
 - 其他要注意的地方
 
環(huán)境信息一覽
- 以下是我這邊本次實(shí)戰(zhàn)的環(huán)境信息,可作為參考。
 
- IDEA:2021.3.2 (Ultimate Edition)
 - 本地電腦操作系統(tǒng):macOS Montery(12.3)
 - 服務(wù)器:Ubuntu 20.04 LTS(4核8G
 
準(zhǔn)備服務(wù)器
- 一臺(tái)Linux服務(wù)器是遠(yuǎn)程開發(fā)必須的,自己內(nèi)網(wǎng)的、租用云服務(wù)廠商的都可以。
 - IDEA會(huì)自動(dòng)在服務(wù)器上安裝所需的服務(wù),咱們無(wú)需提前準(zhǔn)備什么,唯一要求是可以通過SSH登錄此服務(wù)器。
 - 欣宸的服務(wù)器是騰訊云輕應(yīng)用服務(wù)器,在官網(wǎng)租用的,如下圖,4核8G,一年兩百多,感覺挺劃算。
 

- 接下來(lái)要在服務(wù)器上把開發(fā)用的代碼準(zhǔn)備好,我這里是將自己github倉(cāng)庫(kù)下載到服務(wù)器上,代碼存放在這里:/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創(chuàng)建遠(yuǎn)程連接
- 服務(wù)器端準(zhǔn)備完畢后,可以開始本地電腦的遠(yuǎn)程連接操作了。
 - 打開IDEA,如下圖,選擇New Connection。
 

- 輸入IP地址,賬號(hào)密碼。
 

- 按要求輸入密碼,遠(yuǎn)程連接成功后,指定工作目錄(Project directory),我指定的是代碼倉(cāng)庫(kù)所在目錄,然后點(diǎn)擊右下角的Download and Start IDE。
 

- 遠(yuǎn)程服務(wù)器開始下載后端應(yīng)用,這是用于支持遠(yuǎn)程開發(fā)的服務(wù)。
 

- 等待下載完成后,就會(huì)多出一個(gè)名為JetBrains Client的應(yīng)用,并且已經(jīng)打開,如下圖紅框,這就是將來(lái)做遠(yuǎn)程開發(fā)的本地工具了。
 

- JetBrains Client界面如下,看起來(lái)像是IDEA,可以看到剛才在服務(wù)器下載的整個(gè)倉(cāng)庫(kù)的內(nèi)容,和在本地打開沒什么區(qū)別,Terminal打開的也是服務(wù)器目錄,修改代碼時(shí)改動(dòng)的也是服務(wù)器上的代碼。
 

- 還剩一個(gè)問題:如上圖所示,此倉(cāng)庫(kù)中并不只有一個(gè)java項(xiàng)目,而是有幾十個(gè)文件夾,每個(gè)文件夾下都是個(gè)獨(dú)立的工程(有的是gradle,有的是maven),如果我現(xiàn)在只想修改其中的一個(gè)(例如上圖紅框中的quarkus-tutorials),并編譯運(yùn)行它,應(yīng)該怎么操作?接下來(lái)就解決此問題(這是IDEA的操作,并非遠(yuǎn)程連接的問題)。
 
重新設(shè)置工程的根目錄
- 接下來(lái)要解決的問題是:IDE遠(yuǎn)程打開的文件夾里有多個(gè)工程,我只想打開其中的一個(gè)maven工程進(jìn)行開發(fā)和調(diào)試。
 - 頂部菜單選擇"File" -> “Project structure…”。
 

- 點(diǎn)擊下圖紅框位置的X符號(hào),會(huì)刪除當(dāng)前內(nèi)容根目錄(Content Root)。
 

- 點(diǎn)擊下圖紅框中的加號(hào),重新添加內(nèi)容根目錄(Content Root)。
 

- 選擇用于開發(fā)的文件夾即可。
 

- 選擇完畢后,終于見到熟悉的目錄結(jié)構(gòu)。
 

- 您可能會(huì)覺著這一段的操作是多此一舉:只要在遠(yuǎn)程連接的時(shí)候設(shè)置工作目錄是quarkus-tutorials就行了,沒必要這么麻煩,您說的沒錯(cuò),在遠(yuǎn)程連接的時(shí)候確實(shí)可以直接指定目錄,但是如果此刻使用的是Jetbrains的space,那里無(wú)法直接指定目錄,只能直接打開。
 
作為maven工程運(yùn)行
- 關(guān)于服務(wù)器的JDK,如果裝了,請(qǐng)按照下圖位置去選擇,如果沒有安裝,按照下圖進(jìn)行遠(yuǎn)程下載即可。
 

- 此刻,IDE并未識(shí)別到這是個(gè)maven工程,需要打開pom.xml,然后在右鍵菜單中選擇Add as Maven Project,如下圖紅框。
 

- 等待項(xiàng)目加載和更新完成后(生成索引時(shí)間較長(zhǎng),我這邊半小時(shí)),終于見到了熟悉的maven項(xiàng)目頁(yè)面,可見和用IDEA時(shí)候并無(wú)區(qū)別。
 

- 試試maven的單元測(cè)試,如下圖,和使用IDEA并無(wú)區(qū)別,順利執(zhí)行。
 

端口轉(zhuǎn)發(fā)
- 開發(fā)web應(yīng)用時(shí),啟動(dòng)應(yīng)用后,訪問遠(yuǎn)程IP地址和端口可能比較麻煩(有的服務(wù)器涉及到安全問題不輕易開端口),此時(shí)JetBrains Client提供的端口轉(zhuǎn)發(fā)功能非常實(shí)用。
 - 端口轉(zhuǎn)發(fā)配置方式如下圖,這樣我訪問本機(jī)的8080端口時(shí),請(qǐng)求就會(huì)轉(zhuǎn)到服務(wù)器的8080端口。
 

- 啟動(dòng)應(yīng)用試試,我的應(yīng)用是個(gè)普通web應(yīng)用,啟動(dòng)后監(jiān)聽8080端口,然而我并沒有給服務(wù)器開通8080端口到外網(wǎng),如下圖,從本地可以訪問成功。
 

其他要注意的地方
- 退出的時(shí)候,會(huì)提示是否關(guān)閉遠(yuǎn)程服務(wù),請(qǐng)自行選擇,我選擇的是Close and Keep Running。
 

- 如果嫌每次輸入密碼麻煩,就在idea中保存起來(lái)。
 

- 下次再打開時(shí)就會(huì)出現(xiàn)之前的記錄,點(diǎn)擊即可進(jìn)入。
 

- Git提交功能也可以正常使用:本地的提交其實(shí)是將服務(wù)器上的代碼提交到Github。
 

- 最后別忘了去插件管理頁(yè)面安裝常用插件。
 - 至此,IDEA遠(yuǎn)程開發(fā)的實(shí)際體驗(yàn)已經(jīng)完成,希望本文能給您一些參考,助您搭建一個(gè)穩(wěn)定高性能的開發(fā)環(huán)境。
 
責(zé)任編輯:姜華 
                    來(lái)源:
                    今日頭條
 














 
 
 
















 
 
 
 