Browse Source

feat(restart-script): 添加JAR文件自动检测功能

在重启脚本中添加自动检测JAR文件的功能:
- 当JAR_NAME为空时自动检测当前目录下的JAR文件
- 如果只有一个JAR文件则自动使用
- 如果有多个JAR文件则提示用户指定
- 更新README文档说明新功能和使用示例
master
前端-胡立永 1 month ago
parent
commit
137646397c
2 changed files with 65 additions and 10 deletions
  1. +32
    -3
      README-restart-script.md
  2. +33
    -7
      restart-java-app.sh

+ 32
- 3
README-restart-script.md View File

@ -22,7 +22,7 @@
# ======================================== # ========================================
# 配置参数 - 请根据实际情况修改 # 配置参数 - 请根据实际情况修改
# ======================================== # ========================================
JAR_NAME="your-app.jar" # JAR包名称
JAR_NAME="" # JAR包名称(留空则自动检测)
PORT=8080 # 应用端口号 PORT=8080 # 应用端口号
``` ```
@ -30,9 +30,14 @@ PORT=8080 # 应用端口号
| 参数 | 说明 | 示例 | | 参数 | 说明 | 示例 |
|------|------|------| |------|------|------|
| `JAR_NAME` | JAR包文件名 | `"my-spring-boot-app.jar"` |
| `JAR_NAME` | JAR包文件名(留空可自动检测) | `"my-spring-boot-app.jar"``""` |
| `PORT` | 应用监听端口 | `8080` | | `PORT` | 应用监听端口 | `8080` |
**自动检测功能**: 如果将 `JAR_NAME` 留空(`JAR_NAME=""`),脚本会自动检测当前目录下的JAR文件:
- 如果只有一个JAR文件,自动使用该文件
- 如果有多个JAR文件,会提示用户指定具体的JAR文件名
- 如果没有JAR文件,会提示错误
### 可选配置项 ### 可选配置项
| 参数 | 说明 | 默认值 | | 参数 | 说明 | 默认值 |
@ -120,7 +125,12 @@ chmod +x restart-java-app.sh
## 常见问题 ## 常见问题
### Q: 提示"JAR文件不存在" ### Q: 提示"JAR文件不存在"
**A**: 检查`JAR_NAME`配置是否正确,确保JAR文件在脚本同一目录下。
**A**:
- 如果使用自动检测模式(`JAR_NAME=""`),确保当前目录下有且仅有一个JAR文件
- 如果指定了JAR文件名,检查`JAR_NAME`配置是否正确,确保JAR文件在脚本同一目录下
### Q: 提示"当前目录下有多个JAR文件"
**A**: 当目录下有多个JAR文件时,需要在脚本中明确指定`JAR_NAME`,例如:`JAR_NAME="my-app.jar"`
### Q: 提示"端口已被占用" ### Q: 提示"端口已被占用"
**A**: 检查是否有其他应用占用了配置的端口,或修改`PORT`配置。 **A**: 检查是否有其他应用占用了配置的端口,或修改`PORT`配置。
@ -148,6 +158,25 @@ chmod +x restart-java-app.sh
## 示例 ## 示例
### 示例1: 自动检测模式(推荐)
如果你的目录下只有一个JAR文件,可以使用自动检测模式:
1. 保持脚本配置为默认:
```bash
JAR_NAME="" # 留空,自动检测
PORT=8080
```
2. 启动应用:
```bash
./restart-java-app.sh start
```
脚本会自动检测并使用目录下唯一的JAR文件。
### 示例2: 指定JAR文件名
假设你有一个名为`my-app.jar`的Spring Boot应用,需要在8080端口运行: 假设你有一个名为`my-app.jar`的Spring Boot应用,需要在8080端口运行:
1. 修改脚本配置: 1. 修改脚本配置:


+ 33
- 7
restart-java-app.sh View File

@ -8,7 +8,7 @@
# ======================================== # ========================================
# 配置参数 - 请根据实际情况修改 # 配置参数 - 请根据实际情况修改
# ======================================== # ========================================
JAR_NAME="your-app.jar" # JAR包名称
JAR_NAME="" # JAR包名称(留空则自动检测)
PORT=8080 # 应用端口号 PORT=8080 # 应用端口号
# ======================================== # ========================================
@ -38,10 +38,36 @@ print_message() {
# 检查JAR文件是否存在 # 检查JAR文件是否存在
check_jar_exists() { check_jar_exists() {
if [ ! -f "$JAR_NAME" ]; then
print_message $RED "错误: JAR文件 '$JAR_NAME' 不存在!"
print_message $YELLOW "请检查JAR_NAME配置是否正确,或确保JAR文件在当前目录下"
exit 1
# 如果JAR_NAME为空,自动检测当前目录下的JAR文件
if [ -z "$JAR_NAME" ]; then
local jar_files=(*.jar)
local jar_count=${#jar_files[@]}
# 检查是否存在JAR文件
if [ ! -f "${jar_files[0]}" ]; then
print_message $RED "错误: 当前目录下没有找到JAR文件!"
print_message $YELLOW "请将JAR文件放在脚本同一目录下,或在脚本中指定JAR_NAME"
exit 1
fi
# 如果只有一个JAR文件,自动使用它
if [ $jar_count -eq 1 ]; then
JAR_NAME="${jar_files[0]}"
print_message $BLUE "自动检测到JAR文件: $JAR_NAME"
else
print_message $RED "错误: 当前目录下有多个JAR文件,请在脚本中指定JAR_NAME:"
for jar in "${jar_files[@]}"; do
print_message $YELLOW " - $jar"
done
exit 1
fi
else
# 检查指定的JAR文件是否存在
if [ ! -f "$JAR_NAME" ]; then
print_message $RED "错误: JAR文件 '$JAR_NAME' 不存在!"
print_message $YELLOW "请检查JAR_NAME配置是否正确,或确保JAR文件在当前目录下"
exit 1
fi
fi fi
} }
@ -201,10 +227,10 @@ show_help() {
echo " help 显示帮助信息" echo " help 显示帮助信息"
echo "" echo ""
echo "配置:" echo "配置:"
echo " JAR包名称: $JAR_NAME"
echo " JAR包名称: ${JAR_NAME:-"自动检测"}"
echo " 端口号: $PORT" echo " 端口号: $PORT"
echo "" echo ""
echo "注意: 请确保在脚本开头正确配置 JAR_NAME 和 PORT 参数"
echo "注意: 如果目录下只有一个JAR文件,可以将JAR_NAME留空实现自动检测"
} }
# ======================================== # ========================================


Loading…
Cancel
Save