跳至主要内容

環境設定

本指南將協助你設定花店管理系統的開發環境。

系統需求

必要工具

工具版本用途
Node.js22.19.0前端開發與建置
Java24(執行)/ 25(編譯目標)後端開發
Git最新版版本控制

資料庫

環境資料庫說明
開發環境H2(預設)嵌入式資料庫,無需安裝,開箱即用
生產環境MySQL 8.x / SQL Server 2012+ / PostgreSQL 8.2+依需求選擇

版本管理工具

工具用途說明
VoltaNode.js 版本管理專案已配置 volta 設定,自動切換版本
SDKMANJava 版本管理專案已配置 .sdkmanrc,自動切換版本

推薦工具

工具用途
VS CodeIDE(專案已內建工作區配置)
BrunoAPI 測試(專案已內建規格於 app-server/bruno/
DBeaver資料庫管理(支援 H2 及各種生產環境資料庫)

安裝步驟

1. 安裝 Node.js

使用 Volta(推薦):

Volta 會自動讀取專案中的 package.json 設定,確保使用正確的 Node.js 版本。

# 安裝 Volta
curl https://get.volta.sh | bash

# 重新載入 shell 設定
source ~/.bashrc # 或 source ~/.zshrc

# 驗證 Volta 安裝
volta --version

# Volta 會在進入專案目錄時自動安裝並使用正確版本
cd app-web
node --version # 應顯示 v22.19.0

專案配置app-web/package.json):

{
"volta": {
"node": "22.19.0"
}
}

Volta 與 nvm 的差異:Volta 會自動根據專案配置切換版本,無需手動 nvm use

2. 安裝 Java

使用 SDKMAN(推薦):

SDKMAN 會自動讀取專案中的 .sdkmanrc 設定,確保使用正確的 Java 版本。

# 安裝 SDKMAN
curl -s "https://get.sdkman.io" | bash

# 重新載入 shell 設定
source ~/.bashrc # 或 source ~/.zshrc

# 啟用自動切換功能(重要!)
sdk config
# 設定 sdkman_auto_env=true

# 驗證 SDKMAN 安裝
sdk version

# SDKMAN 會在進入專案目錄時自動使用正確版本
cd app-server
java -version # 應顯示 openjdk version "24.0.1"

專案配置app-server/.sdkmanrc):

# 使用 JDK 24 執行 Gradle(避免 Kotlin DSL 相容性問題)
# 編譯目標 JDK 25 由 build.gradle.kts toolchain 設定
java=24.0.1-tem

版本說明

  • JDK 24.0.1-tem:Gradle daemon 執行使用,避免 Kotlin DSL 相容性問題
  • JDK 25:編譯目標,由 Gradle toolchain 自動下載管理

Gradle toolchain 配置(build.gradle.kts):

java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}

首次建置時,Gradle 會自動下載 JDK 25 用於編譯,無需手動安裝。

其他平台

Adoptium 下載 JDK 24(Temurin 發行版)。

3. 安裝 Git

macOS

# 使用 Homebrew
brew install git

# 或使用 Xcode Command Line Tools
xcode-select --install

其他平台

Git 官網 下載安裝。

專案設定

1. Clone 專案

# Clone 專案(Monorepo 結構)
git clone git@gitlab.com:appfuse/webapp/appfuse-webapps-v1.git
cd appfuse-webapps-v1/modules

專案結構:

appfuse-webapps-v1/modules/
├── app-server/ # 後端參考實作
├── app-web/ # 前端參考實作(生產)
├── app-web-mockup/ # 前端參考實作(Prototype)
├── appfuse-server/ # 後端框架
├── appfuse-web/ # 前端框架
└── appfuse-docs/ # 文檔站

2. 後端設定

cd app-server

# 建置專案
./gradlew clean build

# 啟動應用程式
./gradlew bootRun

預設資料庫:使用 H2 嵌入式資料庫,資料存放於 ~/Project/appfuse/var/data/app-server/appdb。 Hibernate 會自動建立 Schema(ddl-auto: update),無需手動遷移。

後端應該會在 http://localhost:8080 啟動。

驗證:訪問 http://localhost:8080/actuator/health

3. 前端設定

cd app-web

# 安裝依賴
npm install

# 啟動開發伺服器(使用 Mock API)
npm run dev

前端應該會在 http://localhost:3000 啟動。

Mock API:開發環境預設使用 MSW(Mock Service Worker)模擬後端 API,無需啟動 app-server 即可開發前端。

IDE 設定

VS Code 工作區(推薦)

專案提供完整的 VS Code 工作區配置,可同時開發前後端:

  1. 開啟工作區:File → Open Workspace from File → 選擇 modules/appfuse-webapp.code-workspace
  2. 安裝推薦擴充功能:VS Code 會自動提示安裝各模組推薦的擴充功能

工作區包含的模組

  • 框架:appfuse-web、appfuse-server
  • 參考實作:app-web、app-web-mockup、app-server
  • 文檔:appfuse-docs、app-docs

後端開發擴充功能app-server/.vscode/extensions.json):

  • Extension Pack for Java
  • Gradle for Java
  • Spring Boot Extension Pack
  • Kotlin Language
  • SonarLint

前端開發擴充功能app-web/.vscode/extensions.json):

  • ESLint
  • Prettier
  • Tailwind CSS IntelliSense

啟動與除錯

後端:在 VS Code 側邊欄的「Spring Boot Dashboard」點擊 app-server 啟動

前端:在終端機執行 npm run dev

驗證環境

執行以下命令確認環境正確:

# 版本管理工具
volta --version # 應顯示 Volta 版本
sdk version # 應顯示 SDKMAN 版本

# Node.js 版本(在 app-web 目錄中)
cd app-web
node --version # v22.19.0

# Java 版本(在 app-server 目錄中)
cd app-server
java -version # openjdk version "24.0.1" (Temurin)

# Git 版本
git --version # git version 2.x.x

注意:Node.js 和 Java 版本會根據專案目錄自動切換,請確保在正確的目錄中執行驗證。

常見問題

H2 Console 存取

開發環境可透過 H2 Console 檢視資料庫:

  • URLhttp://localhost:8080/app-server/h2-console
  • JDBC URLjdbc:h2:file:~/Project/appfuse/var/data/app-server/appdb
  • Usernameappmgr
  • Passwordapp1943

切換至生產環境資料庫

修改 application.yml 或建立 application-prod.yml

spring:
datasource:
# MySQL 8.x
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://<host>:<port>/<database>?useUnicode=true&characterEncoding=UTF-8&useSSL=false

# SQL Server 2012+
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://<host>:<port>;databaseName=<database>;...

# PostgreSQL 8.2+
# driver-class-name: org.postgresql.Driver
# url: jdbc:postgresql://<host>:<port>/<database>

Gradle 建置失敗

錯誤Could not resolve toolchain

解決:Gradle toolchain 會自動下載 JDK 25,確保網路連線正常

# 清除 Gradle 快取並重新建置
./gradlew clean build --refresh-dependencies

錯誤Kotlin DSL 相容性問題

解決:確認使用 JDK 24 執行 Gradle

# 確認 .sdkmanrc 設定
cd app-server
cat .sdkmanrc # 應顯示 java=24.0.1-tem

# 確認當前 Java 版本
java -version # 應顯示 openjdk version "24.0.1"

# 如果版本不對,重新進入目錄觸發自動切換
cd .. && cd app-server

SDKMAN 未自動切換版本

現象:進入專案目錄後 Java 版本沒有自動切換

解決:啟用 SDKMAN 自動切換功能

# 編輯 SDKMAN 設定
sdk config
# 或直接編輯設定檔
vim ~/.sdkman/etc/config

# 設定 sdkman_auto_env=true
# 重新開啟終端機

npm install 失敗

錯誤:網路相關錯誤

解決

# 清除 npm 快取
npm cache clean --force

# 重新安裝
rm -rf node_modules package-lock.json
npm install

下一步

環境設定完成後: