53 lines
1.8 KiB
Bash
53 lines
1.8 KiB
Bash
|
|
#!/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[@]}"}"
|