diff --git a/README-restart-script.md b/README-restart-script.md index aa4e85e..bb33016 100644 --- a/README-restart-script.md +++ b/README-restart-script.md @@ -22,7 +22,7 @@ # ======================================== # 配置参数 - 请根据实际情况修改 # ======================================== -JAR_NAME="your-app.jar" # JAR包名称 +JAR_NAME="" # JAR包名称(留空则自动检测) 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` | +**自动检测功能**: 如果将 `JAR_NAME` 留空(`JAR_NAME=""`),脚本会自动检测当前目录下的JAR文件: +- 如果只有一个JAR文件,自动使用该文件 +- 如果有多个JAR文件,会提示用户指定具体的JAR文件名 +- 如果没有JAR文件,会提示错误 + ### 可选配置项 | 参数 | 说明 | 默认值 | @@ -120,7 +125,12 @@ chmod +x restart-java-app.sh ## 常见问题 ### 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: 提示"端口已被占用" **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端口运行: 1. 修改脚本配置: diff --git a/restart-java-app.sh b/restart-java-app.sh index a822616..60d0410 100644 --- a/restart-java-app.sh +++ b/restart-java-app.sh @@ -8,7 +8,7 @@ # ======================================== # 配置参数 - 请根据实际情况修改 # ======================================== -JAR_NAME="your-app.jar" # JAR包名称 +JAR_NAME="" # JAR包名称(留空则自动检测) PORT=8080 # 应用端口号 # ======================================== @@ -38,10 +38,36 @@ print_message() { # 检查JAR文件是否存在 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 } @@ -201,10 +227,10 @@ show_help() { echo " help 显示帮助信息" echo "" echo "配置:" - echo " JAR包名称: $JAR_NAME" + echo " JAR包名称: ${JAR_NAME:-"自动检测"}" echo " 端口号: $PORT" echo "" - echo "注意: 请确保在脚本开头正确配置 JAR_NAME 和 PORT 参数" + echo "注意: 如果目录下只有一个JAR文件,可以将JAR_NAME留空实现自动检测" } # ========================================