Files
2025-10-25 20:06:33 +08:00

78 lines
2.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 设置变量
REPO_URL="http://47.121.181.112:3000/wonder/stardew-valley.git"
PROJECT_DIR="/opt/stardew-valley"
MAVEN_CMD="mvn clean package -Dmaven.test.skip=true" # 跳过测试(编译 & 执行都跳过)
APP_NAME="stardew-valley" # PM2 中的应用名称
JAR_FILE=""
DEPLOY_DIR="/opt/stardew-valley/target" # 你可以指定部署目录,也可以直接使用 target 目录
# 检查依赖是否安装
if ! command -v git &> /dev/null; then
echo "错误:Git 未安装,请先安装 Git。"
exit 1
fi
if ! command -v mvn &> /dev/null; then
echo "错误:Maven 未安装,请先安装 Maven。"
exit 1
fi
if ! command -v pm2 &> /dev/null; then
echo "错误:PM2 未安装,请先安装 PM2。"
exit 1
fi
# 克隆或拉取代码
echo "正在克隆或拉取仓库 $REPO_URL 到 $PROJECT_DIR ..."
if [ -d "$PROJECT_DIR" ]; then
echo "目录 $PROJECT_DIR 已存在,正在拉取最新代码..."
cd "$PROJECT_DIR" || { echo "无法进入目录 $PROJECT_DIR"; exit 1; }
git pull origin main
else
git clone "$REPO_URL" "$PROJECT_DIR"
fi
# 进入项目目录
cd "$PROJECT_DIR" || { echo "无法进入目录 $PROJECT_DIR"; exit 1; }
# 执行 Maven 构建(跳过测试)
echo "正在执行 Maven 构建(跳过测试)..."
$MAVEN_CMD
# 检查构建是否成功
if [ $? -ne 0 ]; then
echo "Maven 构建失败,退出脚本。"
exit 1
fi
# 查找生成的 JAR 文件
JAR_FILE=$(find "$PROJECT_DIR/target" -type f -name "*.jar" | head -n 1)
if [ -z "$JAR_FILE" ]; then
echo "未找到 JAR 文件,构建可能失败或项目类型不识别。"
exit 1
fi
echo "找到 JAR 文件: $JAR_FILE"
# 部署文件(可选,也可直接在 target 目录下启动)
# 可以选择是否拷贝到其他目录(比如 /opt/stardew-valley/app/)
# 如果你不需要部署到其他目录,可以直接使用 target 目录
echo "部署 JAR 文件到 $DEPLOY_DIR ..."
# 如果你不需要复制,可以去掉这一行
# cp "$JAR_FILE" "$DEPLOY_DIR/"
# 删除旧的 PM2 进程
echo "删除 PM2 中的旧进程 $APP_NAME..."
pm2 delete "$APP_NAME" > /dev/null 2>&1
# 启动 Java 应用
echo "正在启动 Java 应用..."
pm2 start "java -jar $JAR_FILE" --no-daemon --name "$APP_NAME"
# 提示信息
echo "部署和启动完成!"