83 lines
2.6 KiB
Bash
83 lines
2.6 KiB
Bash
#!/bin/bash
|
||
# AuthCenter 编译+启动一体化脚本(Termux专属)
|
||
# 特性:任意目录可执行、自动定位项目根、清空旧class、全日志输出
|
||
# 放置位置:AuthCenterConsoleApp/bash/ 下(任意位置也能跑)
|
||
|
||
# 核心:自动定位项目根目录(无论脚本放哪/在哪执行,都能精准找到src上级)
|
||
find_project_root() {
|
||
local current_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||
# 向上查找,直到找到src目录,即为项目根
|
||
while [ ! -d "${current_dir}/src" ] && [ "${current_dir}" != "/" ]; do
|
||
current_dir=$(dirname "${current_dir}")
|
||
done
|
||
if [ "${current_dir}" = "/" ]; then
|
||
echo "❌ 未找到项目根目录(无src文件夹)"
|
||
exit 1
|
||
fi
|
||
echo "${current_dir}"
|
||
}
|
||
|
||
# 锚定项目根+防呆
|
||
BASE_DIR=$(find_project_root)
|
||
SRC_DIR="${BASE_DIR}/src"
|
||
LIB_DIR="${BASE_DIR}/libs"
|
||
OUT_DIR="${BASE_DIR}/runtime"
|
||
LOG_DIR="${BASE_DIR}/logs"
|
||
MAIN_CLASS="Main" # 主类名
|
||
|
||
# 前置校验
|
||
if [ ! -d "${SRC_DIR}" ]; then
|
||
echo "❌ 项目根目录[${BASE_DIR}]下无src目录,请核对结构"
|
||
exit 1
|
||
fi
|
||
|
||
# 查找Java源文件
|
||
JAVA_FILES=$(find "${SRC_DIR}" -name "*.java")
|
||
if [ -z "${JAVA_FILES}" ]; then
|
||
echo "❌ src目录下无.java源文件"
|
||
exit 1
|
||
fi
|
||
|
||
# 1. 清空旧文件+建目录
|
||
echo "🧹 清理旧编译文件..."
|
||
rm -rf "${OUT_DIR}"/*
|
||
mkdir -p "${OUT_DIR}" "${LOG_DIR}"
|
||
|
||
# 2. 拼接classpath(Termux兼容,含依赖+输出目录)
|
||
CP_PARAM=""
|
||
if [ -d "${LIB_DIR}" ]; then
|
||
JAR_LIST=("${LIB_DIR}"/*.jar)
|
||
if [ -f "${JAR_LIST[0]}" ]; then
|
||
CP="${OUT_DIR}:$(IFS=:; echo "${JAR_LIST[*]}")"
|
||
CP_PARAM="-cp ${CP}"
|
||
else
|
||
echo "ℹ️ libs目录无jar包,无依赖编译"
|
||
CP_PARAM="-cp ${OUT_DIR}"
|
||
fi
|
||
else
|
||
echo "ℹ️ 无libs目录,无依赖编译"
|
||
CP_PARAM="-cp ${OUT_DIR}"
|
||
fi
|
||
|
||
# 3. 打印目录信息
|
||
echo "📌 项目目录信息"
|
||
echo " 根目录 :${BASE_DIR}"
|
||
echo " 源码数 :$(echo "${JAVA_FILES}" | wc -l | tr -d ' ')"
|
||
echo " 输出目录:${OUT_DIR}"
|
||
echo "------------------------------------------------------------------------"
|
||
|
||
# 4. 编译源码
|
||
echo "开始编译(Termux+Java7兼容)..."
|
||
javac -encoding UTF-8 -source 1.7 -target 1.7 ${CP_PARAM} -d "${OUT_DIR}" ${JAVA_FILES}
|
||
|
||
if [ $? -ne 0 ]; then
|
||
echo -e "\n❌ 编译失败!排查:JDK版本、源码语法、libs依赖包"
|
||
exit 1
|
||
fi
|
||
echo -e "\n✅ 编译成功!"
|
||
|
||
# 5. 启动程序(全日志输出到logs目录)
|
||
echo "------------------------------------------------------------------------"
|
||
echo "🚀 启动程序...日志输出至 ${LOG_DIR}/winboll_all.log"
|
||
java -cp "${OUT_DIR}:${LIB_DIR}/*" ${MAIN_CLASS} > "${LOG_DIR}/winboll_all.log" 2>&1
|