mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2026-02-04 15:05:54 +08:00
Compare commits
3 Commits
d5561b341c
...
8d845c64c1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d845c64c1 | ||
|
|
b8bfe15368 | ||
|
|
6c496ce7da |
2
pom.xml
2
pom.xml
@@ -45,7 +45,7 @@
|
|||||||
<module>wu-lazy-cloud-heartbeat-dns</module>
|
<module>wu-lazy-cloud-heartbeat-dns</module>
|
||||||
<module>wu-lazy-cloud-heartbeat-protocol-proxy</module>
|
<module>wu-lazy-cloud-heartbeat-protocol-proxy</module>
|
||||||
|
|
||||||
<!-- 样例 -->
|
<!-- 启动类 -->
|
||||||
<module>wu-lazy-cloud-heartbeat-start</module>
|
<module>wu-lazy-cloud-heartbeat-start</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>24</maven.compiler.source>
|
<maven.compiler.source>24</maven.compiler.source>
|
||||||
<maven.compiler.target>24</maven.compiler.target>
|
<maven.compiler.target>24</maven.compiler.target>
|
||||||
|
<javafx.version>24</javafx.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@@ -72,6 +73,15 @@
|
|||||||
<version>${wu-database-lazy-orm-plus-starter.version}</version>
|
<version>${wu-database-lazy-orm-plus-starter.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- JavaFX Web 模块(包含 javafx.scene.web.JSObject) -->
|
||||||
|
<!-- 窗口 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wu.framework</groupId>
|
||||||
|
<artifactId>wu-framework-javafx-spring-starter</artifactId>
|
||||||
|
<version>1.3.4-JDK24-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,12 @@
|
|||||||
<artifactId>wu-saas-share-platform-starter</artifactId>
|
<artifactId>wu-saas-share-platform-starter</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 窗口 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wu.framework</groupId>
|
||||||
|
<artifactId>wu-framework-javafx-spring-starter</artifactId>
|
||||||
|
<version>1.3.4-JDK24-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<!-- 样例 -->
|
<!-- 启动程序 -->
|
||||||
<module>wu-lazy-cloud-heartbeat-client-start</module>
|
<module>wu-lazy-cloud-heartbeat-client-start</module>
|
||||||
<module>wu-lazy-cloud-heartbeat-server-start</module>
|
<module>wu-lazy-cloud-heartbeat-server-start</module>
|
||||||
<module>wu-lazy-cloud-heartbeat-server-cluster-start</module>
|
<module>wu-lazy-cloud-heartbeat-server-cluster-start</module>
|
||||||
|
|||||||
@@ -115,23 +115,3 @@ http://127.0.0.1:18080
|
|||||||
mkdir -p ./jpackage-input
|
mkdir -p ./jpackage-input
|
||||||
cp ./target/*.jar ./jpackage-input/app.jar
|
cp ./target/*.jar ./jpackage-input/app.jar
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
## 打包成Mac程序
|
|
||||||
```shell
|
|
||||||
|
|
||||||
jpackage \
|
|
||||||
--input target \
|
|
||||||
--name wlcn-client \
|
|
||||||
--main-jar wu-lazy-cloud-heartbeat-client-start-1.3.4-JDK24-SNAPSHOT.jar \
|
|
||||||
--main-class org.framework.lazy.cloud.network.heartbeat.client.LazyCloudHeartbeatClientStart \
|
|
||||||
--type dmg \
|
|
||||||
--vendor "小吴小吴bug全无" \
|
|
||||||
--app-version 1.3.4 \
|
|
||||||
--icon src/main/resources/app.icns \
|
|
||||||
--verbose\
|
|
||||||
--java-options "-XstartOnFirstThread" \
|
|
||||||
--java-options "-Dlogging.file.name=logs/wlcn-client.log" \
|
|
||||||
--java-options "-Dapple.awt.UIElement=false"
|
|
||||||
|
|
||||||
```
|
|
||||||
@@ -1,414 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# 异常日志文件路径
|
|
||||||
ERROR_LOG_FILE="packaging_error.log"
|
|
||||||
|
|
||||||
#######################################
|
|
||||||
# 配置参数 - 仅在此处修改参数值
|
|
||||||
#######################################
|
|
||||||
APP_NAME="wlcn-client"
|
|
||||||
APP_VERSION="1.0.0"
|
|
||||||
MAIN_CLASS="org.framework.lazy.cloud.network.heartbeat.client.LazyCloudHeartbeatClientStart"
|
|
||||||
ICON_FILE="src/main/resources/app.icns"
|
|
||||||
# 修复变量名拼写错误:OUTPUTPUT_BASE -> OUTPUT_BASE
|
|
||||||
OUTPUT_BASE="./build"
|
|
||||||
JDK_HOME=${JAVA_HOME}
|
|
||||||
#######################################
|
|
||||||
|
|
||||||
# 派生路径
|
|
||||||
JRE_DIR="${OUTPUT_BASE}/myjre"
|
|
||||||
OUTPUT_DIR="${OUTPUT_BASE}/dist"
|
|
||||||
MAIN_JAR="" # 初始化主JAR路径变量
|
|
||||||
MODULES=""
|
|
||||||
|
|
||||||
# 函数:去除路径末尾的斜杠
|
|
||||||
trim_trailing_slash() {
|
|
||||||
local path="$1"
|
|
||||||
# 若路径非空且以/结尾,则去除末尾的/
|
|
||||||
if [ -n "$path" ] && [ "${path: -1}" = "/" ]; then
|
|
||||||
echo "${path%/}"
|
|
||||||
else
|
|
||||||
echo "$path"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:记录错误日志并退出
|
|
||||||
error_exit() {
|
|
||||||
local error_message="$1"
|
|
||||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
# 输出到控制台
|
|
||||||
echo -e "\033[0;31m错误: $error_message\033[0m" >&2
|
|
||||||
|
|
||||||
# 记录到日志文件
|
|
||||||
echo "[$timestamp] 错误: $error_message" >> "$ERROR_LOG_FILE"
|
|
||||||
echo "[$timestamp] 脚本异常退出" >> "$ERROR_LOG_FILE"
|
|
||||||
echo "----------------------------------------" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 退出脚本
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:在指定目录中查找JAR文件并赋值给MAIN_JAR
|
|
||||||
find_jar_in_directory() {
|
|
||||||
local dir="$1"
|
|
||||||
|
|
||||||
# 检查目录是否存在
|
|
||||||
if [ ! -d "$dir" ]; then
|
|
||||||
echo "错误:目录 '$dir' 不存在"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 查找目录中的JAR文件(兼容写法)
|
|
||||||
local valid_jars=()
|
|
||||||
for jar in $(ls -1 "$dir"/*.jar 2>/dev/null); do
|
|
||||||
if [ -f "$jar" ]; then
|
|
||||||
valid_jars+=("$jar")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 检查JAR文件情况
|
|
||||||
if [ ${#valid_jars[@]} -eq 0 ]; then
|
|
||||||
echo "错误:在目录 '$dir' 中未找到任何JAR文件"
|
|
||||||
return 1
|
|
||||||
elif [ ${#valid_jars[@]} -gt 1 ]; then
|
|
||||||
echo "错误:在目录 '$dir' 中找到多个JAR文件:"
|
|
||||||
for jar in "${valid_jars[@]}"; do
|
|
||||||
echo " - $(basename "$jar")"
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
# 找到唯一JAR文件,赋值给全局变量MAIN_JAR
|
|
||||||
MAIN_JAR="${valid_jars[0]}"
|
|
||||||
echo "找到JAR文件:$MAIN_JAR"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:获取JAR文件,支持用户指定目录(带Tab补全)
|
|
||||||
get_main_jar() {
|
|
||||||
local valid_jars=()
|
|
||||||
|
|
||||||
# 过滤出当前目录中有效的JAR文件(兼容写法)
|
|
||||||
for jar in $(ls -1 *.jar 2>/dev/null); do
|
|
||||||
if [ -f "$jar" ]; then
|
|
||||||
valid_jars+=("$jar")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 如果当前目录找到唯一JAR文件,直接赋值
|
|
||||||
if [ ${#valid_jars[@]} -eq 1 ]; then
|
|
||||||
MAIN_JAR="${valid_jars[0]}"
|
|
||||||
echo "当前目录找到JAR文件:$MAIN_JAR"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 处理多个JAR文件的情况
|
|
||||||
if [ ${#valid_jars[@]} -gt 1 ]; then
|
|
||||||
local jar_list=""
|
|
||||||
for jar in "${valid_jars[@]}"; do
|
|
||||||
jar_list+=" - $(basename "$jar")\n"
|
|
||||||
done
|
|
||||||
error_exit "当前目录下找到多个JAR文件,请保留唯一主JAR文件后重试:\n$jar_list"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 当前目录未找到JAR文件,提示用户输入目录(支持Tab补全)
|
|
||||||
echo "当前目录下未找到任何JAR文件。"
|
|
||||||
local jar_dir=""
|
|
||||||
local trimmed_dir=""
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
# 使用read -e启用Tab键路径补全
|
|
||||||
read -e -p "请输入包含JAR文件的文件夹路径(相对路径,按Tab键可补全): " jar_dir
|
|
||||||
|
|
||||||
# 处理用户输入的路径(去除末尾斜杠)
|
|
||||||
trimmed_dir=$(trim_trailing_slash "$jar_dir")
|
|
||||||
|
|
||||||
if [ -z "$trimmed_dir" ]; then
|
|
||||||
echo "路径不能为空,请重新输入"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 尝试查找JAR文件并赋值给MAIN_JAR
|
|
||||||
if find_jar_in_directory "$trimmed_dir"; then
|
|
||||||
# 查找成功,MAIN_JAR已被赋值
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:初始化参数数组(使用两个索引数组替代关联数组)
|
|
||||||
init_parameters() {
|
|
||||||
# 参数名称数组
|
|
||||||
local names=(
|
|
||||||
"应用名称"
|
|
||||||
"版本号"
|
|
||||||
"主类全路径"
|
|
||||||
"主JAR文件"
|
|
||||||
"图标文件"
|
|
||||||
"输出目录"
|
|
||||||
"JDK安装路径"
|
|
||||||
"自定义JRE目录"
|
|
||||||
)
|
|
||||||
|
|
||||||
# 参数值数组(与名称数组顺序对应)
|
|
||||||
local values=(
|
|
||||||
"$APP_NAME"
|
|
||||||
"$APP_VERSION"
|
|
||||||
"$MAIN_CLASS"
|
|
||||||
"$MAIN_JAR"
|
|
||||||
"$ICON_FILE"
|
|
||||||
"$OUTPUT_DIR"
|
|
||||||
"$JDK_HOME"
|
|
||||||
"$JRE_DIR"
|
|
||||||
)
|
|
||||||
|
|
||||||
# 返回两个数组(通过字符串拼接传递)
|
|
||||||
echo "${names[*]}|||${values[*]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:显示参数表格
|
|
||||||
display_parameters() {
|
|
||||||
local params_str="$1"
|
|
||||||
# 拆分参数数组
|
|
||||||
local names_str="${params_str%%|||*}"
|
|
||||||
local values_str="${params_str#*|||}"
|
|
||||||
|
|
||||||
# 转换为数组
|
|
||||||
local names=($names_str)
|
|
||||||
local values=($values_str)
|
|
||||||
|
|
||||||
# 计算最长参数名长度
|
|
||||||
local max_len=0
|
|
||||||
for name in "${names[@]}"; do
|
|
||||||
local len=${#name}
|
|
||||||
if (( len > max_len )); then
|
|
||||||
max_len=$len
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
local term_width=$(tput cols 2>/dev/null || echo 80)
|
|
||||||
local line=$(printf "%0.s-" $(seq 1 $term_width))
|
|
||||||
|
|
||||||
echo -e "\n===== 打包参数信息 ====="
|
|
||||||
echo "$line"
|
|
||||||
printf "| %-${max_len}s | %s |\n" "参数名称" "参数值"
|
|
||||||
echo "$line"
|
|
||||||
|
|
||||||
# 遍历输出所有参数(使用索引对应)
|
|
||||||
for ((i=0; i<${#names[@]}; i++)); do
|
|
||||||
printf "| %-${max_len}s | %s |\n" "${names[$i]}" "${values[$i]}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "$line"
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:参数确认
|
|
||||||
confirm_parameters() {
|
|
||||||
local params_str="$1"
|
|
||||||
display_parameters "$params_str"
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
read -p $'\n确认使用以上参数?(输入 o 继续,q 取消) ' -n 1 -r
|
|
||||||
echo
|
|
||||||
if [[ $REPLY =~ ^[Oo]$ ]]; then
|
|
||||||
echo "用户确认,继续操作..."
|
|
||||||
return 0
|
|
||||||
elif [[ $REPLY =~ ^[Qq]$ ]]; then
|
|
||||||
echo "用户取消操作"
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
echo "无效输入,请输入 o 或 q"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:生成自定义JRE
|
|
||||||
# 函数:生成自定义JRE
|
|
||||||
generate_jre() {
|
|
||||||
echo -e "\n==> 开始生成自定义JRE..."
|
|
||||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
|
||||||
echo "[$timestamp] 开始生成自定义JRE" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 检查JRE目录是否已存在
|
|
||||||
if [ -d "${JRE_DIR}" ]; then
|
|
||||||
echo -e "\033[0;33m警告:JRE目录已存在 - ${JRE_DIR}\033[0m"
|
|
||||||
while true; do
|
|
||||||
read -p "请选择操作 (1: 继续执行并删除现有目录, 2: 跳过生成JRE) [1/2]: " choice
|
|
||||||
case $choice in
|
|
||||||
1)
|
|
||||||
echo "==> 删除现有JRE目录: ${JRE_DIR}"
|
|
||||||
rm -rf "${JRE_DIR}" || error_exit "无法删除现有JRE目录,请检查权限"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
echo "==> 跳过JRE生成操作"
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "无效输入,请输入1或2"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 检查JAR文件是否存在
|
|
||||||
if [ ! -f "${MAIN_JAR}" ]; then
|
|
||||||
error_exit "JAR文件不存在 - ${MAIN_JAR}\n请检查文件是否被移动或删除"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 分析依赖模块
|
|
||||||
echo "==> 分析应用依赖的Java模块..."
|
|
||||||
MODULES=$(jdeps --print-module-deps --ignore-missing-deps "${MAIN_JAR}" 2>> "$ERROR_LOG_FILE" | tr -d '\n')
|
|
||||||
|
|
||||||
if [ -z "${MODULES}" ]; then
|
|
||||||
echo "警告:未检测到依赖模块,使用默认模块集"
|
|
||||||
MODULES="java.base,java.desktop"
|
|
||||||
fi
|
|
||||||
echo "检测到的Java模块:${MODULES}"
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 检测到的Java模块:${MODULES}" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 生成JRE(修复输出路径错误,移除多余的)
|
|
||||||
if ! jlink \
|
|
||||||
--module-path "${JDK_HOME}/jmods" \
|
|
||||||
--add-modules "${MODULES}" \
|
|
||||||
--output "${JRE_DIR}" \
|
|
||||||
--strip-debug \
|
|
||||||
--no-man-pages \
|
|
||||||
--no-header-files; then
|
|
||||||
error_exit "JLink命令执行失败,详情请查看日志文件: $ERROR_LOG_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 验证JRE
|
|
||||||
if [ ! -f "${JRE_DIR}/bin/java" ]; then
|
|
||||||
error_exit "JRE生成失败,未找到java可执行文件"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n==> JRE生成成功!"
|
|
||||||
echo "JRE版本信息:"
|
|
||||||
"${JRE_DIR}/bin/java" -version
|
|
||||||
echo "JRE路径:${JRE_DIR}"
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] JRE生成成功:${JRE_DIR}" >> "$ERROR_LOG_FILE"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:打包DMG
|
|
||||||
package_dmg() {
|
|
||||||
echo -e "\n==> 开始打包DMG文件..."
|
|
||||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
|
||||||
echo "[$timestamp] 开始打包DMG文件" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 检查输出目录是否存在,不存在则创建
|
|
||||||
if [ ! -d "${OUTPUT_DIR}" ]; then
|
|
||||||
echo "==> 输出目录不存在,创建目录: ${OUTPUT_DIR}"
|
|
||||||
mkdir -p "${OUTPUT_DIR}" || error_exit "无法创建输出目录: ${OUTPUT_DIR}"
|
|
||||||
else
|
|
||||||
echo "==> 输出目录已存在,无需创建: ${OUTPUT_DIR}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 检查JAR文件是否存在
|
|
||||||
if [ ! -f "${MAIN_JAR}" ]; then
|
|
||||||
error_exit "JAR文件不存在 - ${MAIN_JAR}\n请检查文件是否被移动或删除"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 检查JRE是否存在
|
|
||||||
if [ ! -d "${JRE_DIR}" ] || [ ! -f "${JRE_DIR}/bin/java" ]; then
|
|
||||||
error_exit "未找到有效的JRE,请先执行生成JRE操作(选项1)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 执行打包
|
|
||||||
if ! eval jpackage \
|
|
||||||
--input . \
|
|
||||||
--type dmg \
|
|
||||||
--name "${APP_NAME}" \
|
|
||||||
--app-version "${APP_VERSION}" \
|
|
||||||
--main-jar "${MAIN_JAR}" \
|
|
||||||
--main-class "${MAIN_CLASS}" \
|
|
||||||
--runtime-image "${JRE_DIR}" \
|
|
||||||
--dest "${OUTPUT_DIR}" \
|
|
||||||
# --icon "${ICON_FILE}" \
|
|
||||||
--vendor "小吴小吴bug全无" >> "$ERROR_LOG_FILE" 2>&1; then
|
|
||||||
error_exit "JPackage命令执行失败,详情请查看日志文件: $ERROR_LOG_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n==> DMG打包完成!"
|
|
||||||
echo "生成的DMG文件位于:${OUTPUT_DIR}"
|
|
||||||
echo "应用名称:${APP_NAME}-${APP_VERSION}.dmg"
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] DMG打包完成:${OUTPUT_DIR}/${APP_NAME}-${APP_VERSION}.dmg" >> "$ERROR_LOG_FILE"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# 函数:显示操作菜单
|
|
||||||
show_menu() {
|
|
||||||
clear
|
|
||||||
echo "====================================="
|
|
||||||
echo " 应用打包工具 "
|
|
||||||
echo "====================================="
|
|
||||||
echo "1. 生成自定义JRE"
|
|
||||||
echo "2. 打包DMG文件(需先完成步骤1)"
|
|
||||||
echo "3. 退出"
|
|
||||||
echo "====================================="
|
|
||||||
}
|
|
||||||
|
|
||||||
# 初始化日志文件
|
|
||||||
echo "=====================================" > "$ERROR_LOG_FILE"
|
|
||||||
echo "打包工具日志 - $(date +"%Y-%m-%d %H:%M:%S")" >> "$ERROR_LOG_FILE"
|
|
||||||
echo "=====================================" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 主流程
|
|
||||||
echo "==> 开始准备环境..."
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 开始准备环境" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 尝试获取主JAR并赋值给MAIN_JAR
|
|
||||||
echo "==> 正在检测JAR文件..."
|
|
||||||
if ! get_main_jar; then
|
|
||||||
error_exit "获取JAR文件失败"
|
|
||||||
fi
|
|
||||||
echo "==> 主JAR文件已设置为:$MAIN_JAR"
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 主JAR文件已设置为:$MAIN_JAR" >> "$ERROR_LOG_FILE"
|
|
||||||
|
|
||||||
# 初始化参数数组
|
|
||||||
params_str=$(init_parameters)
|
|
||||||
|
|
||||||
# 显示菜单并处理用户选择
|
|
||||||
while true; do
|
|
||||||
show_menu
|
|
||||||
read -p "请选择操作 [1-3]: " choice
|
|
||||||
|
|
||||||
case $choice in
|
|
||||||
1)
|
|
||||||
# 生成自定义JRE
|
|
||||||
if confirm_parameters "$params_str"; then
|
|
||||||
# 仅确保基础输出目录存在,JRE目录在generate_jre中处理
|
|
||||||
if [ ! -d "${OUTPUT_BASE}" ]; then
|
|
||||||
mkdir -p "${OUTPUT_BASE}" || error_exit "无法创建基础输出目录: ${OUTPUT_BASE}"
|
|
||||||
fi
|
|
||||||
if ! generate_jre; then
|
|
||||||
echo "生成JRE过程中出现错误,详情请查看日志"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
read -p "按任意键返回菜单..."
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
# 打包DMG
|
|
||||||
if confirm_parameters "$params_str"; then
|
|
||||||
if ! package_dmg; then
|
|
||||||
echo "打包DMG过程中出现错误,详情请查看日志"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
read -p "按任意键返回菜单..."
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
echo "==> 退出程序,再见!"
|
|
||||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 正常退出程序" >> "$ERROR_LOG_FILE"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "无效选择,请输入1-3之间的数字"
|
|
||||||
read -p "按任意键继续..."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
@@ -123,7 +123,8 @@
|
|||||||
|
|
||||||
<argument>--type</argument>
|
<argument>--type</argument>
|
||||||
<argument>dmg</argument>
|
<argument>dmg</argument>
|
||||||
<!-- <argument>${os.name.contains("Windows") ? "msi" : (os.name.contains("Mac") ? "dmg" : "deb")}</argument>-->
|
<!-- 根据操作系统动态设置打包类型 -->
|
||||||
|
<!-- <argument>${os.name.contains("Windows") ? "msi" : (os.name.contains("Mac") ? "dmg" : "deb")}</argument>-->
|
||||||
|
|
||||||
<argument>--input</argument>
|
<argument>--input</argument>
|
||||||
<argument>target</argument>
|
<argument>target</argument>
|
||||||
@@ -138,7 +139,7 @@
|
|||||||
<argument>${project.build.finalName}.jar</argument>
|
<argument>${project.build.finalName}.jar</argument>
|
||||||
|
|
||||||
<argument>--main-class</argument>
|
<argument>--main-class</argument>
|
||||||
<argument>org.framework.lazy.cloud.network.heartbeat.client.LazyCloudHeartbeatClientStart</argument>
|
<argument>org.springframework.boot.loader.launch.JarLauncher</argument>
|
||||||
|
|
||||||
<!-- <argument>--icon</argument>-->
|
<!-- <argument>--icon</argument>-->
|
||||||
<!-- <argument>src/main/resources/app${os.name.contains("Windows") ? ".ico" : (os.name.contains("Mac") ? ".icns" : ".png")}</argument>-->
|
<!-- <argument>src/main/resources/app${os.name.contains("Windows") ? ".ico" : (os.name.contains("Mac") ? ".icns" : ".png")}</argument>-->
|
||||||
@@ -147,10 +148,10 @@
|
|||||||
<argument>1.3.4</argument>
|
<argument>1.3.4</argument>
|
||||||
|
|
||||||
<argument>--vendor</argument>
|
<argument>--vendor</argument>
|
||||||
<argument>小吴小吴bug全无</argument>
|
<argument>小吴小吴bug全无${os.name}</argument>
|
||||||
|
|
||||||
<argument>--description</argument>
|
<argument>--description</argument>
|
||||||
<argument>Spring Boot Application</argument>
|
<argument>${description}</argument>
|
||||||
</arguments>
|
</arguments>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ public class LazyCloudHeartbeatClientStart {
|
|||||||
String normalizedArch = PlatformDependent.normalizedArch();
|
String normalizedArch = PlatformDependent.normalizedArch();
|
||||||
String normalizedOs = PlatformDependent.normalizedOs();
|
String normalizedOs = PlatformDependent.normalizedOs();
|
||||||
System.out.println("normalizedArch: " + normalizedArch+"\nnormalizedOs: " + normalizedOs);
|
System.out.println("normalizedArch: " + normalizedArch+"\nnormalizedOs: " + normalizedOs);
|
||||||
|
|
||||||
SpringApplication.run(LazyCloudHeartbeatClientStart.class,args);
|
SpringApplication.run(LazyCloudHeartbeatClientStart.class,args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
package org.framework.lazy.cloud.network.heartbeat.client;
|
|
||||||
|
|
||||||
import io.micrometer.core.instrument.Tags;
|
|
||||||
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
|
|
||||||
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
|
|
||||||
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties;
|
|
||||||
import org.springframework.boot.actuate.metrics.system.DiskSpaceMetricsBinder;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@Import({MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class})
|
|
||||||
public class MetricsConfig {
|
|
||||||
|
|
||||||
// fix cgroup2fs环境
|
|
||||||
@Bean
|
|
||||||
public UptimeMetrics uptimeMetrics() {
|
|
||||||
try {
|
|
||||||
return new UptimeMetrics();
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("Failed to initialize UptimeMetrics: " + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Bean
|
|
||||||
public ProcessorMetrics processorMetrics() {
|
|
||||||
try {
|
|
||||||
return new ProcessorMetrics();
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("Failed to initialize ProcessorMetrics: " + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Bean
|
|
||||||
public FileDescriptorMetrics fileDescriptorMetrics(){
|
|
||||||
try {
|
|
||||||
return new FileDescriptorMetrics();
|
|
||||||
}catch (Exception e){
|
|
||||||
System.err.println("Failed to initialize FileDescriptorMetrics: " + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Bean
|
|
||||||
public DiskSpaceMetricsBinder diskSpaceMetrics(MetricsProperties properties) {
|
|
||||||
try {
|
|
||||||
List<File> paths = properties.getSystem().getDiskspace().getPaths();
|
|
||||||
return new DiskSpaceMetricsBinder(paths, Tags.empty());
|
|
||||||
}catch (Exception e){
|
|
||||||
System.err.println("Failed to initialize DiskSpaceMetricsBinder: " + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,8 @@ spring:
|
|||||||
# inet-port: 7001
|
# inet-port: 7001
|
||||||
# inet-host: 127.0.0.1
|
# inet-host: 127.0.0.1
|
||||||
# inet-port: 7001
|
# inet-port: 7001
|
||||||
inet-host: 124.222.152.160
|
# inet-host: 124.222.152.160
|
||||||
|
inet-host: 1.116.249.110
|
||||||
# inet-port: 31560
|
# inet-port: 31560
|
||||||
inet-path: wu-lazy-cloud-heartbeat-server
|
inet-path: wu-lazy-cloud-heartbeat-server
|
||||||
client-id: socks-local-proxy # 客户端ID
|
client-id: socks-local-proxy # 客户端ID
|
||||||
@@ -32,17 +33,17 @@ spring:
|
|||||||
password: wujiawei
|
password: wujiawei
|
||||||
database: 2
|
database: 2
|
||||||
|
|
||||||
---
|
|
||||||
#spring:
|
|
||||||
# datasource:
|
|
||||||
# url: jdbc:h2:~/client_heartbeat;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=true;MODE=MySQL;CASE_INSENSITIVE_IDENTIFIERS=TRUE
|
|
||||||
# username: sa
|
|
||||||
# driver-class-name: org.h2.Driver
|
|
||||||
|
|
||||||
---
|
---
|
||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql://127.0.0.1:3306/wu_lazy_cloud_heartbeat_client_start?allowMultiQueries=true&useUnicode=true&autoReconnect=true&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&databaseTerm=SCHEMA
|
url: jdbc:h2:~/client_heartbeat;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=true;MODE=MySQL;CASE_INSENSITIVE_IDENTIFIERS=TRUE
|
||||||
username: root
|
username: sa
|
||||||
password: wujiawei
|
driver-class-name: org.h2.Driver
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
|
||||||
|
---
|
||||||
|
#spring:
|
||||||
|
# datasource:
|
||||||
|
# url: jdbc:mysql://127.0.0.1:3306/wu_lazy_cloud_heartbeat_client_start?allowMultiQueries=true&useUnicode=true&autoReconnect=true&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&databaseTerm=SCHEMA
|
||||||
|
# username: root
|
||||||
|
# password: wujiawei
|
||||||
|
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
|||||||
@@ -2,4 +2,7 @@ spring:
|
|||||||
datasource:
|
datasource:
|
||||||
url: jdbc:h2:~/client_heartbeat
|
url: jdbc:h2:~/client_heartbeat
|
||||||
username: sa
|
username: sa
|
||||||
driver-class-name: org.h2.Driver
|
driver-class-name: org.h2.Driver
|
||||||
|
|
||||||
|
---
|
||||||
|
spring.dem
|
||||||
@@ -34,3 +34,12 @@ spring:
|
|||||||
port: 9002
|
port: 9002
|
||||||
http-protocol-proxy:
|
http-protocol-proxy:
|
||||||
port: 8002
|
port: 8002
|
||||||
|
---
|
||||||
|
#窗口配置
|
||||||
|
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
javafx:
|
||||||
|
target-url: http://127.0.0.1:6004/netty-client-local-ui/index.html
|
||||||
|
window:
|
||||||
|
title: wlcn客户端
|
||||||
@@ -56,4 +56,13 @@ spring:
|
|||||||
- /druid/**
|
- /druid/**
|
||||||
- /.well-known/appspecific/com.chrome.devtools.json
|
- /.well-known/appspecific/com.chrome.devtools.json
|
||||||
- /token/access_token
|
- /token/access_token
|
||||||
- /sys/user/findUseZoneList
|
- /sys/user/findUseZoneList
|
||||||
|
|
||||||
|
---
|
||||||
|
#窗口配置
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
javafx:
|
||||||
|
target-url: http://127.0.0.1:6004/netty-client-local-ui/index.html
|
||||||
|
window:
|
||||||
|
title: wlcn服务端
|
||||||
|
|||||||
Reference in New Issue
Block a user