使用 Visual Studio Code 開發 Java 應用程式的環境設定指南 | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 Visual Studio Code 開發 Java 應用程式的環境設定指南

最近公司越來越多 Java 專案,這陣子使用 Visual Studio Code 來開發 Java 應用程式小有心得。這篇文章我打算來介紹如何快速建立 Java 的開發環境,並介紹如何在 Visual Studio Code 開發工具下進行設定,讓你順利的開發出第一個 Spring Boot 應用程式,從開新專案到封裝部署,真的就簡單幾個步驟而已,開發體驗還算不錯。

Java

本篇文章於 2022-07-30 更新。

基礎環境設定

  • 安裝 Chocolatey 套件管理器

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    
  • 安裝 VSCode 開發工具Essential Java Spring Boot Snippets 擴充套件

    我的 Essential Java Spring Boot Snippets 擴充套件除了包含一些非常好用的 Code Snippets 之外,還會順便安裝 Extension Pack for Java, Spring Boot Tools, Spring Initializr Java Support, Spring Boot Dashboard, Java Decompiler, Dependency Analytics, Live Preview, XML, YAMLLombok Annotations Support for VS Code 擴充套件。這些大概就是用 Visual Studio Code 開發 Spring Boot 應用程式的必備擴充套件了!

    除此之外,有些額外的 Java 擴充套件我也列在以下清單中,請視需要安裝即可。

    choco install vscode -y
    
    # Essential Java Spring Boot Snippets
    # https://marketplace.visualstudio.com/items?itemName=doggy8088.spring-boot-snippets
    code --install-extension doggy8088.spring-boot-snippets
    
    # Git Extension Pack
    # https://marketplace.visualstudio.com/items?itemName=doggy8088.git-extension-pack
    code --install-extension doggy8088.git-extension-pack
    
    # Checkstyle for Java
    # https://marketplace.visualstudio.com/items?itemName=shengchen.vscode-checkstyle
    code --install-extension shengchen.vscode-checkstyle
    
    # Tomcat for Java
    # https://marketplace.visualstudio.com/items?itemName=adashen.vscode-tomcat
    # code --install-extension adashen.vscode-tomcat
    
    # SonarLint
    # https://marketplace.visualstudio.com/items?itemName=sonarsource.sonarlint-vscode
    # code --install-extension sonarsource.sonarlint-vscode
    
  • 初始化 Java 執行環境 (JDK, JAVA_HOME)

    因為 Visual Studio Code 的 Java 擴充套件,需要 JDK 17 以上版本才能正常運作,但事實上你的 Java 專案只要是 Java 1.5 以上版本都可以使用 Visual Studio Code 來進行開發,你可以在一台電腦中安裝多個不同版本的 JDK 開發套件!

    在 VSCode 的 Java in Visual Studio Code 文件中,他們建議以下來源的 JDK 版本,事實上你安裝任何一套都可以,全部都是相容的:

    我自己則是使用 Microsoft Build of OpenJDK,因為用 Chocolatey 安裝比較方便,而且 microsoft-openjdk 套件預設就是 Java 的 LTS 最新版本,日後升級也比較方便。

    請以系統管理員身份開啟 PowerShell 環境執行以下命令:

    # 安裝 Microsoft Build of OpenJDK 與 Apache Maven
    choco install microsoft-openjdk maven -y
    

    如果你的電腦中只有安裝一個版本的 JDK 的話,其實是不太需要設定 JAVA_HOME 環境變數的。但是如果你必須安裝多套不同的 JDK 版本的話,建議你將 JAVA_HOME 環境變數指向到最新版 JDK 的安裝路徑

    查詢 JDK 安裝路徑的方法,是先開啟 Command Prompt 命令提示字元視窗,執行 where java 命令,找出 java.exe 的執行檔路徑:

    C:\Program Files\Microsoft\jdk-17.0.2.8-hotspot\bin\java.exe
    

    此時 JDK 安裝路徑就是以下這段,而 JAVA_HOME 環境變數就應該指向到這個路徑:

    C:\Program Files\Microsoft\jdk-17.0.2.8-hotspot
    

    以下是透過 PowerShell 快速設定 JAVA_HOME 環境變數的方法:

    # 設定 JAVA_HOME 環境變數 (請確認以下 JAVA_HOME 路徑是否正確)
    $env:JAVA_HOME = 'C:\Program Files\Microsoft\jdk-17.0.2.8-hotspot'
    [System.Environment]::SetEnvironmentVariable('JAVA_HOME', $env:JAVA_HOME, [System.EnvironmentVariableTarget]::User)
    
  • 初始化 Visual Studio Code 開發環境,調整 使用者設定 (settings.json)

    基本上,以下三個設定是我個人的喜好,建議可以設定上去:

    {
      "java.debug.settings.hotCodeReplace": "auto",
      "java.saveActions.organizeImports": true,
      "editor.foldingImportsByDefault": true
    }
    

    VSCode 1.59.0 加入一個新的 "editor.foldingImportsByDefault" 設定值,設定為 true 可以幫助你預設折疊所有的 import 語句,相當不錯!

    這裡的 "java.jdt.ls.java.home" 是一個相當重要的設定,

    如果你的 Spring Boot 一定要跑在 Java 8 環境,那麼你的 JAVA_HOME 環境變數可以設定在 Java 8 JDK 路徑,但是開啟 VSCode 就會開始出現錯誤訊息。此時你必須手動調整 "java.jdt.ls.java.home" 設定,告訴 VSCode 中的 Java 擴充套件去哪裡找到 JDK 17 的安裝路徑。

    {
      "java.jdt.ls.java.home": "C:\\Program Files\\Microsoft\\jdk-17.0.2.8-hotspot"
    }
    

完成上述設定後,請確實關閉所有已開啟的 Visual Studio Code 視窗,重新啟動 Visual Studio Code 就可以正常開發了!

建立你的第一個 Spring Boot 應用程式

  1. 使用 VSCode 的 Spring Initializr Java Support 擴充套件建立一個以 Apache Maven 為主的 Spring Boot 專案

    在 Visual Studio Code 執行 F1 > Spring Initializr: Create a Maven Project 命令

    選擇 Spring Boot 版本: 2.7.2

    選擇程式語言: Java

    輸入 Group Id: com.duotify (通常會輸入一個組織名稱群組名稱)

    輸入 Artifact Id: demo1 (這裡要輸入一個應用程式的唯一名稱,這會決定最後封裝的檔名)

    選擇封裝方式: Jar

    選擇 Java 版本: 17

    選取相依套件: Spring Web (要開發 Spring Boot 一定要選取這個套件) 與 Lombok

    選擇一個資料夾: 假設我們選擇 g:\Projects 的話,他會自動建立一個 g:\Projects\<artifactId> 目錄,也就是 g:\Projects\demo1

    右下角會彈出通知訊息,請按下 Open 按鈕直接開啟 Java 專案!

    image

    注意: 首次建立使用 Maven 為主的 Spring Boot 專案,必須等上數分鐘完成相依套件安裝,可能要有點耐性,最多不超過 10 分鐘才對。

  2. 加入 spring-boot-starter-validationspringdoc-openapi-ui 相依套件

    從側邊欄開啟 MAVEN 檢視(View),展開 demo1 節點

    點擊 Dependencies 旁邊的 號,搜尋並加入 spring-boot-starter-validation (org.springframework.boot) 與 springdoc-openapi-ui (org.springdoc) 相依套件。這個步驟會自動修改 Apache Maven 的 pom.xml 檔案(POM = Project Object Model)。

    展開 Lifecycle 節點,項目下的 install 旁邊的 ▶ 按鈕,執行 Maven 的 install 命令,將缺少的套件安裝完成

    加入 springdoc-openapi-ui 相依套件

  3. 建立控制器 (src\main\java\com\duotify\demo1\controllers\HomeController.java)

    package com.duotify.demo1.controllers;
    
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/api/home")
    public class HomeController {
        @GetMapping
        public ResponseEntity<String> getItem() {
            return ResponseEntity.ok("Hello World");
        }
    }
    
  4. 按下 F5 啟動專案

    查看 API 執行結果: http://localhost:8080/api/home

    查看 Swagger 介面: http://localhost:8080/swagger-ui.htmlhttp://localhost:8080/swagger-ui/index.html

  5. 封裝應用程式

    從側邊欄開啟 MAVEN 檢視(View),展開 demo1 節點,展開 Lifecycle 節點

    點擊 package 旁邊的 ▶ 按鈕,即可自動產生 Jar 封裝檔,並位於 target/ 目錄下

    從側邊欄開啟 MAVEN 檢視(View),展開 demo1 節點,展開 Lifecycle 節點,點擊 package 旁邊的 ▶ 按鈕

    如果要手動封裝專案時若想暫時跳過單元測試執行,可以利用以下命令搭配 -Dmaven.test.skip=true 參數:

    mvnw clean package '-Dmaven.test.skip=true'
    
  6. 執行應用程式

    預設會跑在 8080 連接埠,以下範例為使用 8081 連接埠:

    java -jar target/demo1-0.0.1-SNAPSHOT.jar --server.port=8081
    

相關連結