Files
as-daycard-openapi/start.sh

53 lines
1.8 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# ===========================================================
# start.sh — daycard-openapi 后端一键启动脚本
# 项目: Spring Boot 2.6.6 / Java 17 / 端口 8084
#
# 用法:
# ./start.sh # clean 后启动(推荐)
# ./start.sh --no-clean # 跳过 clean,加速重复启动
# ./start.sh -Dspring-boot.run.jvmArguments="-Dserver.port=8090"
# # 透传任意 maven / spring-boot 参数
# ===========================================================
set -euo pipefail
cd "$(dirname "$0")"
# ---- 1. 选定 Java 17(找不到则回退 Java 8)----
JDK17_PREF="/Users/zhaoguodong/Library/Java/JavaVirtualMachines/jbr-17.0.14/Contents/Home"
if [[ -d "$JDK17_PREF" ]]; then
export JAVA_HOME="$JDK17_PREF"
elif JDK17_AUTO="$(/usr/libexec/java_home -v 17 2>/dev/null)"; then
export JAVA_HOME="$JDK17_AUTO"
elif JDK8_AUTO="$(/usr/libexec/java_home -v 1.8 2>/dev/null)"; then
export JAVA_HOME="$JDK8_AUTO"
echo "⚠️ 未找到 Java 17,回退到 Java 8" >&2
else
echo "❌ 找不到 Java 17 或 Java 8,请安装 JDK 或修改本脚本里的 JAVA_HOME" >&2
exit 1
fi
echo "==> JAVA_HOME=$JAVA_HOME"
"$JAVA_HOME/bin/java" -version
# ---- 2. 解析参数 ----
DO_CLEAN=1
PASSTHRU=()
for arg in "$@"; do
case "$arg" in
--no-clean) DO_CLEAN=0 ;;
--clean) DO_CLEAN=1 ;;
*) PASSTHRU+=("$arg") ;;
esac
done
# ---- 3. 启动 ----
# clean 可清掉 target 中残留的 stale class(曾出现 AsApplication 2.class
# 导致“找到两个 main class”无法启动的问题)。
GOAL="spring-boot:run"
if [[ "$DO_CLEAN" -eq 1 ]]; then
GOAL="clean spring-boot:run"
echo "==> mvn clean spring-boot:run"
else
echo "==> mvn spring-boot:run"
fi
mvn $GOAL "${PASSTHRU[@]+"${PASSTHRU[@]}"}"