逻辑⽅法execute使⽣成的zip包路径位于项⽬根⽬录下的target⽂件夹,且zip⽂件中必须包含可执⾏的jar包,以及程序运⾏依赖的第三jar包lib⽬录
时间: 2024-04-12 10:32:37 浏览: 81
为了将生成的 zip 包路径设置为项目根目录下的 `target` 文件夹,并且包含可执行的 jar 包和依赖的第三方 jar 包的 `lib` 目录,您可以在编写 Shell 脚本时添加一些逻辑来实现这个需求。下面是修改后的示例脚本:
```shell
#!/bin/bash
# 检查参数是否存在
if [ $# -eq 0 ]; then
echo "请提供一个目录作为参数"
exit 1
fi
# 获取项目根目录路径
project_dir=$(dirname "$(dirname "$1")")
# 创建目标文件夹
target_dir="$project_dir/target"
mkdir -p "$target_dir"
# 定义 jar 文件名
jar_name="myapp.jar"
# 递归遍历目录
function traverse_directory() {
local dir=$1
local log_count=0
local txt_count=0
for file in "$dir"/*; do
if [ -f "$file" ]; then
if [[ "$file" == *.log ]]; then
echo "Log 文件:$file"
((log_count++))
elif [[ "$file" == *.txt ]]; then
echo "Txt 文件:$file"
((txt_count++))
fi
elif [ -d "$file" ]; then
traverse_directory "$file"
fi
done
if [ $log_count -gt 0 ]; then
echo "总共找到 $log_count 个 Log 文件在目录:$dir"
fi
if [ $txt_count -gt 0 ]; then
echo "总共找到 $txt_count 个 Txt 文件在目录:$dir"
fi
}
# 调用函数遍历目录
traverse_directory "$1"
# 复制可执行的 jar 包和 lib 目录到目标文件夹
cp "$1/$jar_name" "$target_dir/$jar_name"
cp -r "$1/lib" "$target_dir/"
# 创建 zip 包
cd "$target_dir"
zip -r myapp.zip ./*
# 返回到项目根目录
cd "$project_dir"
```
请将这个脚本保存为 `build_zip.sh`,然后在命令行中运行它,例如:
```shell
bash build_zip.sh /path/to/directory
```
请注意,这个脚本假设您的项目根目录是命令行中指定目录的上一级目录。它会在项目根目录下的 `target` 文件夹中生成一个名为 `myapp.zip` 的压缩包,其中包含可执行的 `myapp.jar` 文件和 `lib` 目录。
希望这对您有所帮助!如果您有其他问题,请随时提问。
阅读全文