天天看點

在樹莓派上開發SpringBoot 之使用VSCode遠端開發

一些運作在ARM單闆電腦上的IoT應用通常會提供RESTful風格的API接口。本次的文章記錄如何在本地電腦上通過VS Code的遠端開發功能,在樹莓派端建立一個SpringBoot工程,并實作調試和運作。

因為之前已經實作了在X86_64平台上用VS Code建立SpringBoot工程和使用VS Code的遠端開發功能在樹莓進行開發。是以這次我們主要參考之前的經驗,完成下面的工作。

準備工作

在樹莓派上安裝JDK11或更高版本

本步驟是在樹莓派上執行的安裝

如之前文章所述,我的樹莓派2B闆子的鏡像是ubuntu 21.04,是以我要先檢查下系統中的java版本:

$ java -version
           

如果你的系統顯示的java jdk版本為11或者更高,可以跳過本步驟。但我的系統提示我未安裝任何java程式,好在ubuntu系統給了一些安裝提示,是以我隻需根據提示輸入想要安裝的版本指令即可(其他系統可以根據實際情況安裝,需要注意是需要安裝JDK而非JRE):

$ sudo apt-get install -y openjdk-11-jdk-headless
           

安裝好後再次檢視java版本,已經滿足要求:

$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.10)
OpenJDK Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.10, mixed mode)
           

如果之前已經安裝了其他版本的Java,則可以在安裝新的Java版本後通過

update-alternatives

指令切換Java版本。

安裝VSCode遠端伺服器端的擴充

本步驟在本地電腦使用VSCode的遠端開發能力連接配接到樹莓派端後再進行

首先要用VSCode遠端連接配接到樹莓派。然後在Extensions功能下安裝擴充到樹莓派伺服器端。

需要安裝的遠端擴充分别是

Extension Pack for Java

Spring Boot Extension Pack

如圖我已經在本地端安裝過Extension Pack for Java了,是以我要點選Install in SSH: x.x.x.x我的樹莓派端。同理安裝Spring Boot Extension Pack擴充到樹莓派端。
在樹莓派上開發SpringBoot 之使用VSCode遠端開發

安裝完這兩個擴充後切換到Extensions的SSH: x.x.x.x-INSTALLED分組可以檢視遠端終端上安裝好的擴充。因為這兩個擴充包會包含許多其他擴充,是以你會看到下列擴充都已經被自動安裝上了。

在樹莓派上開發SpringBoot 之使用VSCode遠端開發

在樹莓派上調試SpringBoot

在安裝好樹莓派上的Java JDK11和相關的遠端VSCode擴充後,就可以像在本地開發SpringBoot工程一樣進行工作了。我們可以選擇從零建立一個SpringBoot工程,或者git clone一個在其他平台已經開發好的工程。

在開發SpringBoot時我們經常遇到國外Maven倉庫源下載下傳速度慢的問題,可以通過修改為國内源解決。

在樹莓派端從零建立一個SpringBoot起始工程

大體步驟與之前的文章一緻:Ubuntu下使用VS Code建立Spring Boot工程
  • 在VSCode遠端連接配接到樹莓派端後,打開指令台(

    Ctrl+Shift+P

    F1

    ),輸入spring會顯示可用的SpringBoot指令,選擇Spring Initializr: Create a Maven Project即可。
  • 選擇SpringBoot版本,根據需求選擇即可,這裡我選的是2.5.9,也可以選擇較高的版本,隻是我比較擔心有些依賴會不支援較高的版本。
  • 接下來選擇開發語言,我用的是java。
  • 然後設定包名和項目名(GroupId和ArtifactID),分别代表

    項目組織唯一辨別符

    項目唯一的辨別符

  • 選擇打包類型未Jar
  • 選擇Java版本為11,當然也有其他選項,由于VSCode的SpringBoot擴充包要求最低版本為11,是以我之前選擇配置JDK11。這個版本限制可以通過安裝低版本的擴充解決。
  • 接下來選擇初始工程的依賴,根據需求選擇即可。
  • 最後選擇工程儲存的目錄以完成建立。啰嗦下哈:這裡選擇的目錄是樹莓派端的儲存目錄,雖然我們此時是在本地電腦上的VSCode界面,但是實際正在遠端連接配接樹莓派端
在樹莓派上開發SpringBoot 之使用VSCode遠端開發

或者打開一個已有的工程

也可以直接clone我之前在x86_64平台系統上建立的示例工程,然後直接打開:

$ git clone https://github.com/congtou001/springboot-demo.git
           
在樹莓派上開發SpringBoot 之使用VSCode遠端開發
由于該工程引用了Lombok依賴,并且使用了@Data注釋,打開該工程後發現注釋無法正常使用。可能時你的VSCode遠端伺服器端沒有安裝Lombok擴充,需要安裝該擴充後才可以正常使用注解。

調試并運作SpringBoot

這裡的步驟和在本地VSCode界面一緻。在EXPLORER的SPRING BOOT DASHBOARD分組下找到打開的的SpringBoot項目,點選項目名右側的Debug按鈕即可開始調試。待項目編譯完并開始運作後,便可以在本地的任意浏覽器打開該項目的頁面了。

下圖顯示了在本地電腦上遠端調試樹莓派項目的界面。由于項目的編譯和運作均是在樹莓派端運作,而我的樹莓派又是比較舊的2B版本,是以速度會慢不少。

可能遇到的問題: 我在第一次調試該項目的時候直接導緻樹莓派的1G記憶體瞬間跑滿,結果卡死了遠端服務。我的解決方案是為樹莓派的ubuntu系統建立了一個1G大小的swap交換記憶體。
在樹莓派上開發SpringBoot 之使用VSCode遠端開發

下圖是在樹莓派2B端運作SpringBoot demo工程的api接口傳回結果

在樹莓派上開發SpringBoot 之使用VSCode遠端開發

遇到的問題

修改maven源鏡像到國内

由于Maven預設的settings.xml使用官方倉庫位址,是以國内下載下傳依賴很慢,可以按照以下步驟配置為國内鏡像位址。

首先找到預設的settings.xml檔案,如果是linux系統下,一般是在使用者目錄的.m2檔案夾内:

~/.m2/settings.xml

。如果沒有,可以建立一個。

然後打開或建立該.xml配置檔案來設定國内鏡像位址,在<mirrors>标簽内配置:

<mirror>
    <id>aliyun-public</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun public</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

<mirror>
    <id>aliyun-central</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun central</name>
    <url>https://maven.aliyun.com/repository/central</url>
</mirror>

<mirror>
    <id>aliyun-spring</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun spring</name>
    <url>https://maven.aliyun.com/repository/spring</url>
</mirror>

<mirror>
    <id>aliyun-spring-plugin</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun spring-plugin</name>
    <url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>

<mirror>
    <id>aliyun-apache-snapshots</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun apache-snapshots</name>
    <url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>

<mirror>
    <id>aliyun-google</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun google</name>
    <url>https://maven.aliyun.com/repository/google</url>
</mirror>

<mirror>
    <id>aliyun-gradle-plugin</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun gradle-plugin</name>
    <url>https://maven.aliyun.com/repository/gradle-plugin</url>
</mirror>

<mirror>
    <id>aliyun-jcenter</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun jcenter</name>
    <url>https://maven.aliyun.com/repository/jcenter</url>
</mirror>

<mirror>
    <id>aliyun-releases</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun releases</name>
    <url>https://maven.aliyun.com/repository/releases</url>
</mirror>

<mirror>
    <id>aliyun-snapshots</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun snapshots</name>
    <url>https://maven.aliyun.com/repository/snapshots</url>
</mirror>  

<mirror>
    <id>aliyun-grails-core</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun grails-core</name>
    <url>https://maven.aliyun.com/repository/grails-core</url>
</mirror>

<mirror>
    <id>aliyun-mapr-public</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyun mapr-public</name>
    <url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>
           

重新編譯或調試就會從國内maven鏡像倉庫下載下傳依賴了。

為樹莓派端建立SWAP交換記憶體

添加swap檔案:

$ mkdir swap
$ cd swap
$ sudo dd if=/dev/zero of=sfile bs=1024 count=1000000
           

轉化并激活為swap檔案:

$ sudo mkswap sfile
$ sudo swapon sfile
           

@Data注解無效

若添加了Lombok依賴後依然無法使用@Data等注解自動生成Setter和Getter,則可能是VSCode忘了安裝擴充

Lombok Annotations Support for VS Code

。在Extensions中安裝該擴充即可。注意區分是安裝到本地還是遠端。

本文參考

  • Maven 國内源配置

同時釋出于:在樹莓派上開發SpringBoot 之使用VSCode遠端開發

本文來自部落格園,作者:蔥頭001,轉載請注明原文連結:https://www.cnblogs.com/congtou001/p/15860159.html

繼續閱讀