使用 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 應用程式,從開新專案到封裝部署,真的就簡單幾個步驟而已,開發體驗還算不錯。

基礎環境設定

  • 安裝 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'))
    
  • 初始化 Java 執行環境 (JDK, JAVA_HOME)

    因為 Visual Studio Code 的 Java 擴充套件,需要 JDK 11 以上版本才能正常運作,但是你的專案依然可以使用 JDK 8 來開發與執行,不過這樣就需要安裝兩個版本的 JDK 才行!

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

    # 安裝 AdoptOpenJDK JDK with Hotspot 11.0.11+9 (x64), Apache Maven
    choco install adoptopenjdk11 maven -y
    
    # 設定 JAVA_HOME 環境變數
    $env:JAVA_HOME = 'C:\Program Files\AdoptOpenJDK\jdk-11.0.11.9-hotspot'
    [System.Environment]::SetEnvironmentVariable('JAVA_HOME', $env:JAVA_HOME, [System.EnvironmentVariableTarget]::Machine)
    
    # 安裝 Azul Zulu Builds of OpenJDK (Java 8 LTS)
    choco install zulu8 -y
    
  • 安裝 VSCode 開發工具Essential Spring Boot Snippets 擴充套件

    choco install vscode -y
    code --install-extension doggy8088.spring-boot-snippets
    
    # 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
    

    我的 Essential Spring Boot Snippets 擴充套件除了包含一些非常好用的 Code Snippets 之外,還會順便安裝 Java Extension Pack, 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 應用程式的必備擴充套件了!

  • 初始化 Visual Studio Code 開發環境,調整 使用者設定 (settings.json)

    這裡的 "java.home" 是一個相當重要的設定,如果你的 Spring Boot 跑在 Java 8 環境,那麼你的 JAVA_HOME 環境變數可以設定在 Java 8 JDK 路徑,但是 VSCode 的 "java.home" 一定要指向到 JDK 11 以上的版本路徑。

    "java.home": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot",
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-1.8",
            "path": "C:\\Program Files\\Zulu\\zulu-8"
        },
        {
            "name": "JavaSE-11",
            "path": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot",
            "sources": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot\\src.zip",
            "javadoc": "https://docs.oracle.com/en/java/javase/11/docs/api",
            "default": true
        }
    ],
    "java.debug.settings.hotCodeReplace": "auto",
    "java.saveActions.organizeImports": true,
    "editor.foldingImportsByDefault": true
    

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

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

  1. 使用 Spring Initializr 工具建立一個以 Apache Maven 為主的 Spring Boot 專案

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

    選擇 Spring Boot 版本: 2.5.3

    選擇程式語言: Java

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

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

    選擇封裝方式: Jar

    選擇 Java 版本: 11

    選取相依套件: Spring Web, Lombok

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

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

  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. 建立 API 回應模型 (src\main\java\com\duotify\demo1\models\HomeResponse.java)

    package com.duotify.demo1.models;
    
    public class HomeResponse {
        public String Name;
        public HomeResponse(String name) {
            this.Name = name;
        }
    }
    
  4. 建立控制器 (src\main\java\com\duotify\demo1\controllers\HomeController.java)

    package com.duotify.demo1.controllers;
    import com.duotify.demo1.models.HomeResponse;
    
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("/api/home")
    public class HomeController {
        @GetMapping("")
        public ResponseEntity<HomeResponse> index() {
            return ResponseEntity.ok().body(new HomeResponse("Will"));
        }
    }
    
  5. 按下 F5 啟動專案

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

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

  6. 設定建置時預設跳過單元測試執行

    找到 pom.xml 檔案,並加入以下設定到 <properties> ... </properties> 區段設定中:

    <maven.test.skip>true</maven.test.skip>
    
  7. 封裝應用程式

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

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

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

    如果要手動封裝專案時也要包含執行單元測試,可以利用以下命令搭配 -Dmaven.test.skip=false 參數:

    mvnw clean package -Dmaven.test.skip=false
    
  8. 執行應用程式

    java -jar target/demo1-0.0.1-SNAPSHOT.jar --server.port=8081
    
  9. 對網站進行壓力測試

    go get github.com/rakyll/hey
    
    hey -n 2000 http://localhost:8081/api/home
    

相關連結