Skip to content

Commit 5920f54

Browse files
committed
🚑 修复macos和linux运行出错
1 parent fd0e610 commit 5920f54

File tree

11 files changed

+223
-132
lines changed

11 files changed

+223
-132
lines changed

.github/workflows/release.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ jobs:
2525
- name: Build executable
2626
shell: powershell
2727
run: |
28-
sh bin/deploy-windows.sh
29-
sh bin/deploy-macos.sh
30-
sh bin/deploy-linux.sh
28+
bash bin/release-windows.sh
29+
bash bin/release-linux.sh
30+
bash bin/release-macos.sh
31+
bash bin/release-macos.sh x64
3132
3233
- name: Create Release
3334
uses: ncipollo/release-action@v1

bin/deploy-macos.sh

Lines changed: 0 additions & 60 deletions
This file was deleted.

bin/deploy-windows.sh

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,48 @@
11
#!/bin/bash
2-
# ====================================================
2+
set -e
3+
4+
# Linux 发布脚本 (x86_64)
35
# JDK 升级后需要修改下面 2 个版本号
4-
# ====================================================
56

6-
# JRE 压缩文件名
7+
# JRE 文件
78
jre_filename="jre-17.0.12+7_linux.tar.gz"
8-
# JRE 解压后的目录名
99
jre_dirname="jdk-17.0.12+7-jre"
1010

11-
# 最终产物的压缩文件名
11+
# 最终产物
1212
dist_filename="sonovel-linux.tar.gz"
13-
# 解压后的目录名
14-
dist_dirname="SoNovel-Linux"
13+
dist_dirname="SoNovel-linux"
1514

15+
# 项目根路径
1616
project_path=$(
1717
cd "$(dirname "$0")" || exit
1818
cd ..
1919
pwd
2020
)
2121
cd "$project_path" || exit
2222

23-
mvn clean package -Dmaven.test.skip=true -DjrePath=runtime
23+
# Maven 打包
24+
mvn clean package -Plinux-x86_64 -Dmaven.test.skip=true -DjrePath=runtime
25+
26+
# 创建产物目录
2427
mkdir -p dist
25-
mkdir "target/$dist_dirname"
28+
mkdir -p "target/$dist_dirname"
2629

27-
# 复制配置文件、使用说明、启动脚本、JRE
28-
cp config.ini bundle/readme.txt bundle/linux-run.sh "bundle/$jre_filename" "target/$dist_dirname"
30+
# 复制配置、说明、字体、JRE
31+
cp config.ini bundle/readme.txt bundle/run-linux.sh "bundle/$jre_filename" "target/$dist_dirname"
2932
cp -r bundle/fonts "target/$dist_dirname"
3033

3134
cd target
32-
# 重命名
3335
mv app-jar-with-dependencies.jar app.jar
3436
cp app.jar "$dist_dirname"
3537

38+
# 解压 JRE 并改名
3639
cd "$dist_dirname"
37-
# 解压
3840
tar zxf "$jre_filename" && rm "$jre_filename"
39-
# 重命名
4041
mv "$jre_dirname" runtime
4142
cd ..
42-
# 压缩
43+
44+
# 打包压缩
4345
tar czf "$dist_filename" "$dist_dirname"
44-
# 剪切
4546
mv "$dist_filename" $project_path/dist
4647

4748
echo Linux done!

bin/release-macos.sh

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# macOS 发布脚本 (arm64, x64)
5+
# JDK 升级后需要修改下面 3 个版本号
6+
7+
# JRE 文件名
8+
jre_filename_arm64="jre-17.0.11+9-arm64_mac.tar.gz"
9+
jre_filename_x64="jre-17.0.11+9-x64_mac.tar.gz"
10+
# JRE 解压后的目录名
11+
jre_dirname="jdk-17.0.11+9-jre"
12+
13+
# 最终产物名
14+
dist_filename_arm64="sonovel-macos_arm64.tar.gz"
15+
dist_dirname_arm64="SoNovel-macOS_arm64"
16+
dist_filename_x64="sonovel-macos_x64.tar.gz"
17+
dist_dirname_x64="SoNovel-macOS_x64"
18+
19+
# 自动定位项目根目录
20+
project_path=$(cd "$(dirname "$0")" || exit; cd ..; pwd)
21+
cd "$project_path" || exit
22+
23+
# 读取架构参数
24+
arch="$1"
25+
if [[ "$arch" == "x64" ]]; then
26+
profile="macos-x86_64"
27+
jre_filename="$jre_filename_x64"
28+
dist_filename="$dist_filename_x64"
29+
dist_dirname="$dist_dirname_x64"
30+
else
31+
arch="arm64" # 默认
32+
profile="macos-arm64"
33+
jre_filename="$jre_filename_arm64"
34+
dist_filename="$dist_filename_arm64"
35+
dist_dirname="$dist_dirname_arm64"
36+
fi
37+
38+
echo "👉 打包 macOS [$arch]..."
39+
40+
# Maven 打包
41+
mvn clean package -Dmaven.test.skip=true -P$profile -DjrePath=runtime
42+
43+
# 准备目录
44+
mkdir -p dist
45+
mkdir -p "target/$dist_dirname"
46+
47+
# 复制配置文件、说明、脚本、字体
48+
cp config.ini bundle/readme.txt bundle/run-macos.sh "bundle/$jre_filename" "target/$dist_dirname"
49+
cp -r bundle/fonts "target/$dist_dirname"
50+
51+
# 复制 jar
52+
cd target
53+
mv app-jar-with-dependencies.jar app.jar || true # 忽略已改名的情况
54+
cp app.jar "$dist_dirname"
55+
56+
# 解压 JRE
57+
cd "$dist_dirname"
58+
tar zxf "$jre_filename" && rm "$jre_filename"
59+
mv "$jre_dirname" runtime
60+
cd ..
61+
62+
# 打包 tar.gz
63+
tar czf "$dist_filename" "$dist_dirname"
64+
mv "$dist_filename" "$project_path/dist"
65+
66+
echo "✅ macOS [$arch] 打包完成!输出: dist/$dist_filename"

bin/release-windows.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/bash
2+
set -e # 出现错误立即退出
3+
4+
# launch4j-maven-plugin 仅支持 windows,mvn package 触发
5+
# Windows 发布脚本 (x86_64)
6+
# JDK 升级后需要修改下面 2 个版本号
7+
8+
# 配置部分
9+
jre_filename="jre-17.0.11+9-x64_windows.tar.gz"
10+
jre_dirname="jdk-17.0.11+9-jre"
11+
dist_filename="sonovel-windows.tar.gz"
12+
13+
# 获取项目根目录
14+
project_path="$( cd "$(dirname "$0")"/.. && pwd )"
15+
dist_path="$project_path/dist"
16+
target_dir="$project_path/target/SoNovel"
17+
18+
prepare_dist_dir() {
19+
mkdir -p "$dist_path"
20+
}
21+
22+
run_maven() {
23+
mvn clean package -Pwindows-x86_64 -Dmaven.test.skip=true -DjrePath=runtime -Denv=prod
24+
}
25+
26+
copy_files() {
27+
cp config.ini bundle/SoNovel.l4j.ini bundle/readme.txt "$target_dir"
28+
cp -r bundle/fonts "$target_dir/"
29+
cp "bundle/$jre_filename" "$target_dir"
30+
}
31+
32+
extract_jre() {
33+
cd "$target_dir"
34+
tar zxf "$jre_filename"
35+
rm "$jre_filename"
36+
mv "$jre_dirname" runtime
37+
}
38+
39+
package_artifacts() {
40+
cd "$project_path/target"
41+
tar czf "$dist_filename" SoNovel
42+
mv "$dist_filename" "$dist_path"
43+
}
44+
45+
main() {
46+
cd "$project_path"
47+
prepare_dist_dir
48+
run_maven
49+
copy_files
50+
extract_jre
51+
package_artifacts
52+
echo "Windows done!"
53+
}
54+
55+
main

bundle/readme.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ Windows 用户
22
运行 SoNovel.exe
33

44
macOS 用户
5-
运行 macos-run.sh
5+
运行 run-macos.sh
66

77
Linux 用户
8-
运行 linux-run.sh
8+
运行 run-linux.sh
99

1010

1111
必看!书源信息
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)