From 24ae486f654a2ad695b5c8c8d3754c7fcbb40b47 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Wed, 26 Nov 2025 23:09:44 +0800 Subject: [PATCH] =?UTF-8?q?WindSurf=E5=92=8CGemini3=E6=95=91=E7=81=AB?= =?UTF-8?q?=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 137 ++--- logs/#124.txt | 1485 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1558 insertions(+), 64 deletions(-) create mode 100644 logs/#124.txt diff --git a/Jenkinsfile b/Jenkinsfile index c8afb4f..18cd68a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -556,7 +556,8 @@ pipeline { @echo off setlocal EnableDelayedExpansion set JAVA_HOME=%JAVA_HOME% - set "WIX_HOME=C:\\Program Files (x86)\\WiX Toolset v3.11" + REM 使用短路径避免 LocalSystem 权限导致的 "此时不应有" 错误 + for %%P in ("C:\\Program Files (x86)\\WiX Toolset v3.11") do set "WIX_HOME=%%~sP" set "PATH=%WIX_HOME%\\bin;%PATH%" echo ============================================ @@ -578,12 +579,12 @@ pipeline { REM 检查 WiX Toolset echo [2/6] 检查 WiX Toolset... + set "WIX_AVAILABLE=0" if exist "%WIX_HOME%\\bin\\candle.exe" ( echo ✓ WiX Toolset 已安装: %WIX_HOME% + set "WIX_AVAILABLE=1" ) else ( - echo ✗ WiX Toolset 未找到 - echo MSI 打包需要 WiX Toolset - exit /b 1 + echo ⚠️ WiX Toolset 未找到,跳过 EXE/MSI,改用 ZIP 绿色版 ) echo. @@ -626,71 +627,79 @@ pipeline { echo ✓ app-image 创建成功 echo. - REM 创建 EXE 安装包 - echo [5/6] 创建 EXE 安装包... - jpackage ^ - --type exe ^ - --app-image target\\jpackage-output\\SLMS ^ - --name SLMS ^ - --app-version 1.0 ^ - --vendor "CHZU" ^ - --description "Smart Library Management System" ^ - --win-menu ^ - --win-dir-chooser ^ - --win-shortcut ^ - --dest target - - if errorlevel 1 ( - echo ⚠️ EXE 安装包创建失败 ^(可能缺少 Inno Setup^) - echo 尝试创建 ZIP 绿色版作为替代... - powershell -Command "Compress-Archive -Path target\\jpackage-output\\SLMS -DestinationPath target\\slms-gui.zip -Force" - if exist target\\slms-gui.zip ( - echo ✓ ZIP 绿色版创建成功: slms-gui.zip - ) - ) else ( - REM 重命名生成的 EXE - if exist target\\SLMS-1.0.exe ( - move /Y target\\SLMS-1.0.exe target\\slms-gui.exe >nul - for %%F in (target\\slms-gui.exe) do ( - set /a SIZE_MB=%%~zF/1048576 - echo ✓ EXE 安装包创建成功: slms-gui.exe ^(!SIZE_MB! MB^) + if "%WIX_AVAILABLE%"=="1" ( + REM 创建 EXE 安装包 + echo [5/6] 创建 EXE 安装包... + jpackage ^ + --type exe ^ + --app-image target\\jpackage-output\\SLMS ^ + --name SLMS ^ + --app-version 1.0 ^ + --vendor "CHZU" ^ + --description "Smart Library Management System" ^ + --win-menu ^ + --win-dir-chooser ^ + --win-shortcut ^ + --dest target + + if errorlevel 1 ( + echo ⚠️ EXE 安装包创建失败 ^(可能缺少 Inno Setup^) + ) else ( + REM 重命名生成的 EXE + if exist target\\SLMS-1.0.exe ( + move /Y target\\SLMS-1.0.exe target\\slms-gui.exe >nul + for %%F in (target\\slms-gui.exe) do ( + set /a SIZE_MB=%%~zF/1048576 + echo ✓ EXE 安装包创建成功: slms-gui.exe ^(!SIZE_MB! MB^) + ) + ) else ( + echo ⚠️ EXE 文件生成了但未找到预期文件名,列出 target 目录: + dir target\\*.exe ) + ) + echo. + + REM 创建 MSI 安装包 + echo [6/6] 创建 MSI 安装包... + jpackage ^ + --type msi ^ + --app-image target\\jpackage-output\\SLMS ^ + --name SLMS ^ + --app-version 1.0 ^ + --vendor "CHZU" ^ + --description "Smart Library Management System" ^ + --win-menu ^ + --win-dir-chooser ^ + --win-shortcut ^ + --dest target + + if errorlevel 1 ( + echo ⚠️ MSI 创建失败,将保留 EXE/ZIP ) else ( - echo ⚠️ EXE 文件生成了但未找到预期文件名,列出 target 目录: - dir target\\*.exe + REM 重命名 MSI + if exist target\\SLMS-1.0.msi ( + move /Y target\\SLMS-1.0.msi target\\slms-gui-installer.msi >nul + for %%F in (target\\slms-gui-installer.msi) do ( + set /a SIZE_MB=%%~zF/1048576 + echo ✓ MSI 创建成功: slms-gui-installer.msi ^(!SIZE_MB! MB^) + ) + ) else ( + echo ⚠️ MSI 文件未找到,检查其他可能的文件名... + dir target\\*.msi + ) ) + echo. + ) else ( + echo [5/6] WiX 不可用,跳过 EXE/MSI,创建 ZIP 绿色版... ) - echo. - - REM 创建 MSI 安装包 - echo [6/6] 创建 MSI 安装包... - jpackage ^ - --type msi ^ - --app-image target\\jpackage-output\\SLMS ^ - --name SLMS ^ - --app-version 1.0 ^ - --vendor "CHZU" ^ - --description "Smart Library Management System" ^ - --win-menu ^ - --win-dir-chooser ^ - --win-shortcut ^ - --dest target - - if errorlevel 1 ( - echo ✗ MSI 创建失败 - exit /b 1 - ) - - REM 重命名 MSI - if exist target\\SLMS-1.0.msi ( - move /Y target\\SLMS-1.0.msi target\\slms-gui-installer.msi >nul - for %%F in (target\\slms-gui-installer.msi) do ( - set /a SIZE_MB=%%~zF/1048576 - echo ✓ MSI 创建成功: slms-gui-installer.msi ^(!SIZE_MB! MB^) + + if %WIX_AVAILABLE%==0 ( + powershell -Command "Compress-Archive -Path target\\jpackage-output\\SLMS -DestinationPath target\\slms-gui.zip -Force" + if exist target\\slms-gui.zip ( + echo ✓ ZIP 绿色版创建成功: slms-gui.zip + ) else ( + echo ✗ ZIP 创建失败,请检查 jpackage 输出 ) - ) else ( - echo ⚠️ MSI 文件未找到,检查其他可能的文件名... - dir target\\*.msi ) echo. diff --git a/logs/#124.txt b/logs/#124.txt new file mode 100644 index 0000000..fb153c8 --- /dev/null +++ b/logs/#124.txt @@ -0,0 +1,1485 @@ +Generic Cause +Obtained Jenkinsfile from git http://localhost:3000/gitea/slms.git +[Pipeline] Start of Pipeline +[Pipeline] node +Running on Jenkins in E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS +[Pipeline] { +[Pipeline] stage +[Pipeline] { (Declarative: Checkout SCM) +[Pipeline] checkout +The recommended git tool is: NONE +using credential slms + > C:\Program Files\Git\bin\git.exe rev-parse --resolve-git-dir E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\.git # timeout=10 +Fetching changes from the remote Git repository + > C:\Program Files\Git\bin\git.exe config remote.origin.url http://localhost:3000/gitea/slms.git # timeout=10 +Fetching upstream changes from http://localhost:3000/gitea/slms.git + > C:\Program Files\Git\bin\git.exe --version # timeout=10 + > git --version # 'git version 2.47.1.windows.1' +using GIT_ASKPASS to set credentials slms-jenkins-gitea + > C:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- http://localhost:3000/gitea/slms.git +refs/heads/*:refs/remotes/origin/* # timeout=10 + > C:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/main^{commit}" # timeout=10 +Checking out Revision 153aa01fb801a82544f80868b1c0f001093a1ddc (refs/remotes/origin/main) + > C:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10 + > C:\Program Files\Git\bin\git.exe checkout -f 153aa01fb801a82544f80868b1c0f001093a1ddc # timeout=10 +Commit message: "chore: fix packaging and email notifications" + > C:\Program Files\Git\bin\git.exe rev-list --no-walk c770217a4eff92b7bc3cad52f1ab861d719769f2 # timeout=10 +[Pipeline] } +[Pipeline] // stage +[Pipeline] withEnv +[Pipeline] { +[Pipeline] withEnv +[Pipeline] { +[Pipeline] stage +[Pipeline] { (Declarative: Tool Install) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] } +[Pipeline] // stage +[Pipeline] withEnv +[Pipeline] { +[Pipeline] stage +[Pipeline] { (1. 拉取Gitea代码) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 从 Gitea 拉取代码 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] bat +清理工作空间中可能被占用的文?.. +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +: ֧¶˳˽̡ +?清理完成 +[Pipeline] echo +清理过程中出现警告: script returned exit code 1 +[Pipeline] } +[Pipeline] // script +[Pipeline] checkout +The recommended git tool is: NONE +using credential gitea-credentials + > C:\Program Files\Git\bin\git.exe rev-parse --resolve-git-dir E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\.git # timeout=10 +Fetching changes from the remote Git repository + > C:\Program Files\Git\bin\git.exe config remote.origin.url http://localhost:3000/gitea/slms.git # timeout=10 +Cleaning workspace + > C:\Program Files\Git\bin\git.exe rev-parse --verify HEAD # timeout=10 +Resetting working tree + > C:\Program Files\Git\bin\git.exe reset --hard # timeout=10 + > C:\Program Files\Git\bin\git.exe clean -fdx # timeout=10 +Fetching upstream changes from http://localhost:3000/gitea/slms.git + > C:\Program Files\Git\bin\git.exe --version # timeout=10 + > git --version # 'git version 2.47.1.windows.1' +using GIT_ASKPASS to set credentials Gitea Repository Credentials + > C:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- http://localhost:3000/gitea/slms.git +refs/heads/*:refs/remotes/origin/* # timeout=10 + > C:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/main^{commit}" # timeout=10 +Checking out Revision 153aa01fb801a82544f80868b1c0f001093a1ddc (refs/remotes/origin/main) + > C:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10 + > C:\Program Files\Git\bin\git.exe checkout -f 153aa01fb801a82544f80868b1c0f001093a1ddc # timeout=10 +Commit message: "chore: fix packaging and email notifications" +Cleaning workspace + > C:\Program Files\Git\bin\git.exe rev-parse --verify HEAD # timeout=10 +Resetting working tree + > C:\Program Files\Git\bin\git.exe reset --hard # timeout=10 + > C:\Program Files\Git\bin\git.exe clean -fdx # timeout=10 +[Pipeline] echo +✓ 代码拉取成功 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (2. Maven编译) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== Maven 编译 SLMS 项目 ========== +[Pipeline] bat + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>set JAVA_HOME=E:\2025-2026\GitAIOps\jdk + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>REM 强制删除 target 目录(如果存在) + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>if exist target ( +echo 清理旧的 target 目录... + rmdir /S /Q target 2>nul + if exist target (echo 警告: 无法删除 target 目录,尝试使?Maven clean... ) else (echo ?target 目录已清? ) +) + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>REM Maven 编译 + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>mvn clean compile test-compile -DskipTests +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- clean:3.2.0:clean (default-clean) @ slms --- +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] Changes detected - recompiling the module! +[INFO] Compiling 29 source files to E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\classes +[INFO] /E:/2025-2026/GitAIOps/jenkins/.jenkins/workspace/SLMS/src/main/java/com/smartlibrary/gui/GUIApplication.java: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\main\java\com\smartlibrary\gui\GUIApplication.java使用了未经检查或不安全的操作。 +[INFO] /E:/2025-2026/GitAIOps/jenkins/.jenkins/workspace/SLMS/src/main/java/com/smartlibrary/gui/GUIApplication.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] Changes detected - recompiling the module! +[INFO] Compiling 29 source files to E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\classes +[INFO] /E:/2025-2026/GitAIOps/jenkins/.jenkins/workspace/SLMS/src/main/java/com/smartlibrary/gui/GUIApplication.java: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\main\java\com\smartlibrary\gui\GUIApplication.java使用了未经检查或不安全的操作。 +[INFO] /E:/2025-2026/GitAIOps/jenkins/.jenkins/workspace/SLMS/src/main/java/com/smartlibrary/gui/GUIApplication.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ slms --- +[INFO] skip non existing resourceDirectory E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\test\resources +[INFO] +[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ slms --- +[INFO] Changes detected - recompiling the module! +[INFO] Compiling 15 source files to E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\test-classes +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 16.588 s +[INFO] Finished at: 2025-11-26T22:46:59+08:00 +[INFO] ------------------------------------------------------------------------ +[Pipeline] echo +✓ 项目编译成功 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (3. 运行Mock测试) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 运行单元测试 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] bat + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>set JAVA_HOME=E:\2025-2026\GitAIOps\jdk + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>mvn test +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ slms --- +[INFO] skip non existing resourceDirectory E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\test\resources +[INFO] +[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- surefire:3.0.0-M7:test (default-test) @ slms --- +[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider +[INFO] +[INFO] ------------------------------------------------------- +[INFO] T E S T S +[INFO] ------------------------------------------------------- +[INFO] Running com.smartlibrary.database.DatabaseConnectionTest +数据库表初始化完成! +数据库连接成功! +数据库连接已关闭! +数据库表初始化完成! +数据库连接成功! +[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.397 s - in com.smartlibrary.database.DatabaseConnectionTest +[INFO] Running com.smartlibrary.observer.BookStatusManagerTest +正在发送邮件... +SMTP服务器: smtp.example.com:587 +发件人: test@example.com +收件人: test@example.com +主题: 图书状态更新通知 +内容: 图书《测试图书》状态已更新:图书借出 +邮件发送成功! +正在发送短信... +服务提供商: TestProvider +收件人: 13800138000 +内容: 图书《测试图书》状态已更新:图书借出 +短信发送成功! +正在发送邮件... +SMTP服务器: smtp.example.com:587 +发件人: test@example.com +收件人: test@example.com +主题: 借阅状态更新通知 +内容: 借阅ID:1 状态已更新:借阅即将到期 +邮件发送成功! +正在发送短信... +服务提供商: TestProvider +收件人: 13800138000 +内容: 借阅ID:1 状态已更新:借阅即将到期 +短信发送成功! +[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.15 s - in com.smartlibrary.observer.BookStatusManagerTest +[INFO] Running com.smartlibrary.factory.BookFactoryTest +创建期刊: 计算机学报 +创建实体书: 测试书籍 +创建实体书: Java编程思想 +创建电子书: 设计模式 +[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.113 s - in com.smartlibrary.factory.BookFactoryTest +[INFO] Running com.smartlibrary.mock.MockDataTest +创建实体书: 测试实体书 +创建电子书: 测试电子书 +[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.099 s - in com.smartlibrary.mock.MockDataTest +[INFO] Running com.smartlibrary.model.BookTest +[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.065 s - in com.smartlibrary.model.BookTest +[INFO] Running com.smartlibrary.model.LoanTest +[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 s - in com.smartlibrary.model.LoanTest +[INFO] Running com.smartlibrary.notification.NotificationTest +正在发送应用内通知... +应用名称: 图书馆管理系统 +版本: 1.0 +接收用户ID: user123 +主题: 测试主题 +内容: 测试内容 +应用内通知发送成功! +无效的用户ID: +正在发送短信... +服务提供商: Twilio +收件人: +1234567890 +内容: 测试内容 +短信发送成功! +无效的手机号码: invalid-phone +正在发送邮件... +SMTP服务器: smtp.example.com:587 +发件人: user@example.com +收件人: test@example.com +主题: 测试主题 +内容: 测试内容 +邮件发送成功! +无效的邮件地址: invalid-email +[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 s - in com.smartlibrary.notification.NotificationTest +[INFO] Running com.smartlibrary.observer.ObserverTest +发送通知给所有用户: +正在发送应用内通知... +应用名称: 智能图书馆 +版本: 1.0.0 +接收用户ID: all_users +主题: 图书状态通知: 新书上架 +内容: 图书信息: +书名: Java编程思想 +作者: Bruce Eckel +ISBN: ISBN123456 +状态: 新书上架 +应用内通知发送成功! +发送通知给预约用户: +正在发送应用内通知... +应用名称: 智能图书馆 +版本: 1.0.0 +接收用户ID: reserved_users_1 +主题: 图书状态通知: 图书可借 +内容: 图书信息: +书名: Java编程思想 +作者: Bruce Eckel +ISBN: ISBN123456 +状态: 图书可借 +应用内通知发送成功! +发送通知给管理员: +正在发送邮件... +SMTP服务器: smtp.example.com:587 +发件人: library@example.com +收件人: admin@library.com +主题: 图书状态通知: 图书不可借 +内容: 图书信息: +书名: Java编程思想 +作者: Bruce Eckel +ISBN: ISBN123456 +状态: 图书不可借 +邮件发送成功! +图书事件: 图书借出 - 图书信息: +书名: Java编程思想 +作者: Bruce Eckel +ISBN: ISBN123456 +状态: 图书借出 +图书事件: 图书归还 - 图书信息: +书名: Java编程思想 +作者: Bruce Eckel +ISBN: ISBN123456 +状态: 图书归还 +发送通知给用户 2001: +正在发送应用内通知... +应用名称: 智能图书馆 +版本: 1.0.0 +接收用户ID: 2001 +主题: 借阅状态通知: 借阅即将到期 +内容: 借阅信息: +借阅ID: 1 +图书ID: 1001 +借阅日期: 2025-11-26 +应还日期: 2025-12-26 +状态: 借阅即将到期 +应用内通知发送成功! +发送通知给用户 2001: +正在发送应用内通知... +应用名称: 智能图书馆 +版本: 1.0.0 +接收用户ID: 2001 +主题: 借阅状态通知: 借阅已逾期 +内容: 借阅信息: +借阅ID: 1 +图书ID: 1001 +借阅日期: 2025-11-26 +应还日期: 2025-12-26 +状态: 借阅已逾期 +逾期罚款: 0.0 +应用内通知发送成功! +发送通知给管理员: +正在发送邮件... +SMTP服务器: smtp.example.com:587 +发件人: library@example.com +收件人: admin@library.com +主题: 借阅状态通知: 借阅已逾期 +内容: 借阅信息: +借阅ID: 1 +图书ID: 1001 +借阅日期: 2025-11-26 +应还日期: 2025-12-26 +状态: 借阅已逾期 +逾期罚款: 0.0 +邮件发送成功! +借阅事件: 图书归还 - 借阅信息: +借阅ID: 1 +图书ID: 1001 +借阅日期: 2025-11-26 +应还日期: 2025-12-26 +状态: 图书归还 +[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s - in com.smartlibrary.observer.ObserverTest +[INFO] +[INFO] Results: +[INFO] +[INFO] Tests run: 37, Failures: 0, Errors: 0, Skipped: 0 +[INFO] +[INFO] +[INFO] --- jacoco:0.8.10:report (report) @ slms --- +[INFO] Loading execution data file E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\jacoco.exec +[INFO] Analyzed bundle 'slms' with 31 classes +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 15.791 s +[INFO] Finished at: 2025-11-26T22:47:22+08:00 +[INFO] ------------------------------------------------------------------------ +[Pipeline] echo +✓ 测试执行完成 +[Pipeline] } +[Pipeline] // script +Post stage +[Pipeline] junit +Recording test results +[Checks API] No suitable checks publisher found. +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (4. Sonar质检) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 执行 SonarQube 代码质量检测 ========== +[Pipeline] withSonarQubeEnv +Injecting SonarQube environment variables using the configuration: SonarQube +[Pipeline] { +[Pipeline] bat + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>set JAVA_HOME=E:\2025-2026\GitAIOps\jdk + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>mvn sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.qualitygate.timeout=300 +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- sonar:3.10.0.2594:sonar (default-cli) @ slms --- +[INFO] User cache: C:\WINDOWS\system32\config\systemprofile\.sonar\cache +[INFO] SonarQube version: 25.11.0.114957 +[INFO] Default locale: "zh_CN", source code encoding: "UTF-8" +[WARNING] Property 'env.SONARQUBE_SCANNER_PARAMS' is encrypted. The encryption of scanner properties is deprecated and will soon be removed. +[INFO] Load global settings +[INFO] Load global settings (done) | time=355ms +[INFO] Server id: 147B411E-AZqM7Cb9i6TlQ4AbupxC +[INFO] Loading required plugins +[INFO] Load plugins index +[INFO] Load plugins index (done) | time=63ms +[INFO] Load/download plugins +[INFO] Load/download plugins (done) | time=71ms +[INFO] Process project properties +[INFO] Process project properties (done) | time=128ms +[INFO] Project key: com.smartlibrary:slms +[INFO] Base dir: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS +[INFO] Working dir: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\sonar +[INFO] Load project settings for component key: 'com.smartlibrary:slms' +[INFO] Load project settings for component key: 'com.smartlibrary:slms' (done) | time=39ms +[INFO] Load quality profiles +[INFO] Load quality profiles (done) | time=224ms +[INFO] Auto-configuring with CI 'Jenkins' +[INFO] Load active rules +[INFO] Load active rules (done) | time=1130ms +[INFO] Load analysis cache +[INFO] Load analysis cache (2.0 kB) | time=131ms +[INFO] Preprocessing files... +[INFO] 2 languages detected in 45 preprocessed files (done) | time=236ms +[INFO] Loading plugins for detected languages +[INFO] Load/download plugins +[INFO] Load/download plugins (done) | time=22ms +[INFO] Load project repositories +[INFO] Load project repositories (done) | time=603ms +[INFO] Indexing files... +[INFO] Project configuration: +[INFO] 45 files indexed (done) | time=51ms +[INFO] Quality profile for java: Sonar way +[INFO] Quality profile for xml: Sonar way +[INFO] ------------- Run sensors on module slms +[INFO] Load metrics repository +[INFO] Load metrics repository (done) | time=72ms +[INFO] Sensor JavaSensor [java] +[INFO] Configured Java source version (sonar.java.source): 11, preview features enabled (sonar.java.enablePreview): false +[INFO] Server-side caching is enabled. The Java analyzer will not try to leverage data from a previous analysis. +[INFO] Using ECJ batch to parse 29 Main java source files with batch size 53 KB. +[INFO] Starting batch processing. +[INFO] The Java analyzer cannot skip unchanged files in this context. A full analysis is performed for all files. +[INFO] 100% analyzed +[INFO] Batch processing: Done. +[INFO] Did not optimize analysis for any files, performed a full analysis for all 29 files. +[INFO] Using ECJ batch to parse 15 Test java source files with batch size 53 KB. +[INFO] Starting batch processing. +[INFO] 100% analyzed +[INFO] Batch processing: Done. +[INFO] Did not optimize analysis for any files, performed a full analysis for all 15 files. +[INFO] No "Generated" source files to scan. +[INFO] Sensor JavaSensor [java] (done) | time=22274ms +[INFO] Sensor SurefireSensor [java] +[INFO] parsing [E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\surefire-reports] +[INFO] Sensor SurefireSensor [java] (done) | time=913ms +[INFO] Sensor XML Sensor [xml] +[INFO] 1 source file to be analyzed +[INFO] 1/1 source file has been analyzed +[INFO] Sensor XML Sensor [xml] (done) | time=853ms +[INFO] Sensor JaCoCo XML Report Importer [jacoco] +[INFO] 'sonar.coverage.jacoco.xmlReportPaths' is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml +[INFO] Importing 1 report(s). Turn your logs in debug mode in order to see the exhaustive list. +[INFO] Sensor JaCoCo XML Report Importer [jacoco] (done) | time=446ms +[INFO] Sensor IaC Docker Sensor [iac] +[INFO] There are no files to be analyzed for the Docker language +[INFO] Sensor IaC Docker Sensor [iac] (done) | time=5ms +[INFO] Sensor IaC hadolint report Sensor [iac] +[INFO] Sensor IaC hadolint report Sensor [iac] (done) | time=13ms +[INFO] Sensor Java Config Sensor [iac] +[INFO] There are no files to be analyzed for the Java language +[INFO] Sensor Java Config Sensor [iac] (done) | time=73ms +[INFO] Sensor TextAndSecretsSensor [text] +[INFO] Available processors: 20 +[INFO] Using 20 threads for analysis. +[INFO] Start fetching files for the text and secrets analysis +[INFO] Using Git CLI to retrieve untracked files +[INFO] Retrieving language associated files and files included via "sonar.text.inclusions" that are tracked by git +[INFO] Starting the text and secrets analysis +[INFO] 45 source files to be analyzed for the text and secrets analysis +[INFO] 45/45 source files have been analyzed for the text and secrets analysis +[INFO] Sensor TextAndSecretsSensor [text] (done) | time=2915ms +[INFO] ------------- Run sensors on project +[INFO] Sensor JavaProjectSensor [java] +[INFO] Sensor JavaProjectSensor [java] (done) | time=4ms +[INFO] Sensor Zero Coverage Sensor +[INFO] Sensor Zero Coverage Sensor (done) | time=2ms +[INFO] Sensor Java CPD Block Indexer +[INFO] Sensor Java CPD Block Indexer (done) | time=238ms +[INFO] ------------- Gather SCA dependencies on project +[INFO] Dependency analysis skipped +[INFO] SCM Publisher is disabled +[INFO] CPD Executor 6 files had no CPD blocks +[INFO] CPD Executor Calculating CPD for 23 files +[INFO] CPD Executor CPD calculation finished (done) | time=194ms +[INFO] SCM revision ID '153aa01fb801a82544f80868b1c0f001093a1ddc' +[INFO] Analysis report generated in 730ms, dir size=730.2 kB +[INFO] Analysis report compressed in 6242ms, zip size=211.3 kB +[INFO] Analysis report uploaded in 188ms +[INFO] ------------- Check Quality Gate status +[INFO] Waiting for the analysis report to be processed (max 300s) +[INFO] QUALITY GATE STATUS: PASSED - View details on http://localhost:9000/dashboard?id=com.smartlibrary%3Aslms +[INFO] Analysis total time: 1:06.198 s +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 01:14 min +[INFO] Finished at: 2025-11-26T22:48:46+08:00 +[INFO] ------------------------------------------------------------------------ +[Pipeline] } +[Pipeline] // withSonarQubeEnv +[Pipeline] echo +✓ SonarQube 分析完成 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (5. 质量门禁) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 等待 SLMS-Quality-Gate 质量门禁结果 ========== +[Pipeline] timeout +Timeout set to expire in 10 min +[Pipeline] { +[Pipeline] script +[Pipeline] { +[Pipeline] withSonarQubeEnv +Injecting SonarQube environment variables using the configuration: SonarQube +[Pipeline] { +[Pipeline] waitForQualityGate +Checking status of SonarQube task 'c303e494-fba1-409b-be44-f4a0db3407d0' on server 'SonarQube' +SonarQube task 'c303e494-fba1-409b-be44-f4a0db3407d0' status is 'SUCCESS' +SonarQube task 'c303e494-fba1-409b-be44-f4a0db3407d0' completed. Quality gate is 'OK' +[Pipeline] echo +✓ SLMS-Quality-Gate 质量门禁检查通过: OK +[Pipeline] } +[Pipeline] // withSonarQubeEnv +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // timeout +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (6. 准备打包) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 准备并行打包 ========== +[Pipeline] bat + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo 检查编译结?.. +检查编译结?.. + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>if exist target\classes (echo ?编译完成,classes 目录存在 ) else (echo ⚠️ 警告: classes 目录不存? ) +?编译完成,classes 目录存在 + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo. + + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo 准备开始四端并行打? +准备开始四端并行打? + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo ?CLI: 使用 -Pcli profile + ?CLI: 使用 -Pcli profile + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo ?GUI: 使用 -Pgui-swing profile + ?GUI: 使用 -Pgui-swing profile + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo ?Web: 使用 -Pweb profile + ?Web: 使用 -Pweb profile + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo ?Android: 使用 Gradle + ?Android: 使用 Gradle + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo. + + +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS>echo ?准备完成,开始并行打? +?准备完成,开始并行打? +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (7. 四端并行打包) +[Pipeline] parallel +[Pipeline] { (Branch: 7.1 CLI 打包 (JAR)) +[Pipeline] { (Branch: 7.2 GUI 打包 (Swing JAR)) +[Pipeline] { (Branch: 7.3 Web 打包 (WAR)) +[Pipeline] { (Branch: 7.4 Android Gradle 打包 (APK)) +[Pipeline] stage +[Pipeline] { (7.1 CLI 打包 (JAR)) +[Pipeline] stage +[Pipeline] { (7.2 GUI 打包 (Swing JAR)) +[Pipeline] stage +[Pipeline] { (7.3 Web 打包 (WAR)) +[Pipeline] stage +[Pipeline] { (7.4 Android Gradle 打包 (APK)) +[Pipeline] tool +[Pipeline] tool +[Pipeline] tool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] tool +[Pipeline] tool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] withEnv +[Pipeline] { +[Pipeline] withEnv +[Pipeline] { +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 打包 CLI 应用 (JAR) ========== +[Pipeline] bat +[Pipeline] echo +========== 打包 GUI Swing 应用 (独立 JAR) ========== +[Pipeline] bat +[Pipeline] echo +========== 打包 Web 应用 (WAR) ========== +[Pipeline] bat +[Pipeline] echo +========== 打包 Android 应用 (APK) ========== +[Pipeline] bat +[CLI] 开始打?.. +[GUI] 开始打?.. +[Web] 开始打?.. +打包 Android 应用... +Starting a Gradle Daemon, 2 incompatible and 1 stopped Daemons could not be reused, use --status for details +[INFO] Scanning for projects... +[INFO] Scanning for projects... +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] -----------------------< com.smartlibrary:slms >------------------------ +[INFO] Building slms 1.0-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ war ]--------------------------------- +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] +[INFO] --- jacoco:0.8.10:prepare-agent (prepare-agent) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] Copying 1 resource from to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] Copying 1 resource from to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] argLine set to -javaagent:C:\\WINDOWS\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.10\\org.jacoco.agent-0.8.10-runtime.jar=destfile=E:\\2025-2026\\GitAIOps\\jenkins\\.jenkins\\workspace\\SLMS\\target\\jacoco.exec +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ slms --- +[INFO] Copying 7 resources from src\main\resources to target\classes +[INFO] +[INFO] --- compiler:3.8.1:compile (default-compile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ slms --- +[INFO] skip non existing resourceDirectory E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\test\resources +[INFO] +[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- surefire:3.0.0-M7:test (default-test) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ slms --- +[INFO] skip non existing resourceDirectory E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\test\resources +[INFO] +[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- surefire:3.0.0-M7:test (default-test) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ slms --- +[INFO] skip non existing resourceDirectory E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\src\test\resources +[INFO] +[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ slms --- +[INFO] Nothing to compile - all classes are up to date +[INFO] +[INFO] --- surefire:3.0.0-M7:test (default-test) @ slms --- +[INFO] Tests are skipped. +[INFO] +[INFO] --- jacoco:0.8.10:report (report) @ slms --- +[INFO] Loading execution data file E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\jacoco.exec +[INFO] Tests are skipped. +[INFO] +[INFO] --- jacoco:0.8.10:report (report) @ slms --- +[INFO] Loading execution data file E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\jacoco.exec +[INFO] Tests are skipped. +[INFO] +[INFO] --- jacoco:0.8.10:report (report) @ slms --- +[INFO] Loading execution data file E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\jacoco.exec +[INFO] Analyzed bundle 'slms' with 31 classes +[INFO] Analyzed bundle 'slms' with 31 classes +[INFO] Analyzed bundle 'slms' with 31 classes +[INFO] +[INFO] --- jar:3.3.0:jar (default-jar) @ slms --- +[INFO] +[INFO] --- jar:3.3.0:jar (default-jar) @ slms --- +[INFO] +[INFO] --- war:3.3.2:war (default-war) @ slms --- +[INFO] Building jar: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\slms-1.0-SNAPSHOT.jar +[INFO] Building jar: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\slms-1.0-SNAPSHOT.jar +[INFO] +[INFO] --- shade:3.5.0:shade (default) @ slms --- +[INFO] +[INFO] --- shade:3.5.0:shade (default) @ slms --- +[INFO] Including org.xerial:sqlite-jdbc:jar:3.36.0.3 in the shaded jar. +[INFO] Including org.slf4j:slf4j-api:jar:1.7.32 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-web:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-autoconfigure:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-logging:jar:2.7.5 in the shaded jar. +[INFO] Including ch.qos.logback:logback-classic:jar:1.2.11 in the shaded jar. +[INFO] Including ch.qos.logback:logback-core:jar:1.2.11 in the shaded jar. +[INFO] Including org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2 in the shaded jar. +[INFO] Including org.apache.logging.log4j:log4j-api:jar:2.17.2 in the shaded jar. +[INFO] Including org.slf4j:jul-to-slf4j:jar:1.7.36 in the shaded jar. +[INFO] Including jakarta.annotation:jakarta.annotation-api:jar:1.3.5 in the shaded jar. +[INFO] Including org.springframework:spring-core:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-jcl:jar:5.3.23 in the shaded jar. +[INFO] Including org.yaml:snakeyaml:jar:1.30 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-json:jar:2.7.5 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-databind:jar:2.13.4.2 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-annotations:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-core:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.4 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-tomcat:jar:2.7.5 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.68 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.68 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.68 in the shaded jar. +[INFO] Including org.springframework:spring-web:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-beans:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-webmvc:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-aop:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-context:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-expression:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.7.5 in the shaded jar. +[INFO] Including org.thymeleaf:thymeleaf-spring5:jar:3.0.15.RELEASE in the shaded jar. +[INFO] Including org.thymeleaf:thymeleaf:jar:3.0.15.RELEASE in the shaded jar. +[INFO] Including org.attoparser:attoparser:jar:2.0.5.RELEASE in the shaded jar. +[INFO] Including org.unbescape:unbescape:jar:1.1.6.RELEASE in the shaded jar. +[INFO] Including org.thymeleaf.extras:thymeleaf-extras-java8time:jar:3.0.4.RELEASE in the shaded jar. +[INFO] Including org.openjfx:javafx-controls:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-controls:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-graphics:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-graphics:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-base:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-base:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-fxml:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-fxml:jar:win:17 in the shaded jar. +[INFO] Including org.xerial:sqlite-jdbc:jar:3.36.0.3 in the shaded jar. +[INFO] Including org.slf4j:slf4j-api:jar:1.7.32 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-web:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-autoconfigure:jar:2.7.5 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-logging:jar:2.7.5 in the shaded jar. +[INFO] Including ch.qos.logback:logback-classic:jar:1.2.11 in the shaded jar. +[INFO] Including ch.qos.logback:logback-core:jar:1.2.11 in the shaded jar. +[INFO] Including org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2 in the shaded jar. +[INFO] Including org.apache.logging.log4j:log4j-api:jar:2.17.2 in the shaded jar. +[INFO] Including org.slf4j:jul-to-slf4j:jar:1.7.36 in the shaded jar. +[INFO] Including jakarta.annotation:jakarta.annotation-api:jar:1.3.5 in the shaded jar. +[INFO] Including org.springframework:spring-core:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-jcl:jar:5.3.23 in the shaded jar. +[INFO] Including org.yaml:snakeyaml:jar:1.30 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-json:jar:2.7.5 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-databind:jar:2.13.4.2 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-annotations:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.core:jackson-core:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.4 in the shaded jar. +[INFO] Including com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.4 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-tomcat:jar:2.7.5 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.68 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.68 in the shaded jar. +[INFO] Including org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.68 in the shaded jar. +[INFO] Including org.springframework:spring-web:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-beans:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-webmvc:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-aop:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-context:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework:spring-expression:jar:5.3.23 in the shaded jar. +[INFO] Including org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.7.5 in the shaded jar. +[INFO] Including org.thymeleaf:thymeleaf-spring5:jar:3.0.15.RELEASE in the shaded jar. +[INFO] Including org.thymeleaf:thymeleaf:jar:3.0.15.RELEASE in the shaded jar. +[INFO] Including org.attoparser:attoparser:jar:2.0.5.RELEASE in the shaded jar. +[INFO] Including org.unbescape:unbescape:jar:1.1.6.RELEASE in the shaded jar. +[INFO] Including org.thymeleaf.extras:thymeleaf-extras-java8time:jar:3.0.4.RELEASE in the shaded jar. +[INFO] Including org.openjfx:javafx-controls:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-controls:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-graphics:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-graphics:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-base:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-base:jar:win:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-fxml:jar:17 in the shaded jar. +[INFO] Including org.openjfx:javafx-fxml:jar:win:17 in the shaded jar. +[INFO] Packaging webapp +[INFO] Assembling webapp [slms] in [E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\slms-1.0-SNAPSHOT] +[INFO] Processing war project +[INFO] Building war: E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target\slms-1.0-SNAPSHOT.war +[INFO] +[INFO] --- spring-boot:2.7.5:repackage (default) @ slms --- +[INFO] Replacing main artifact with repackaged archive +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 13.533 s +[INFO] Finished at: 2025-11-26T22:49:12+08:00 +[INFO] ------------------------------------------------------------------------ +[Pipeline] echo +✓ Web WAR 打包成功 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. + +> Configure project :android +WARNING: The option setting 'android.overridePathCheck=true' is experimental. +The current default is 'false'. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-context-5.3.23.jar, spring-core-5.3.23.jar, spring-expression-5.3.23.jar, spring-jcl-5.3.23.jar, spring-web-5.3.23.jar, spring-webmvc-5.3.23.jar define 2 overlapping resources: +[WARNING] - META-INF/license.txt +[WARNING] - META-INF/notice.txt +[WARNING] spring-beans-5.3.23.jar, spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar define 1 overlapping resource: +[WARNING] - META-INF/spring.factories +[WARNING] spring-web-5.3.23.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/web-fragment.xml +[WARNING] spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar define 2 overlapping resources: +[WARNING] - META-INF/additional-spring-configuration-metadata.json +[WARNING] - META-INF/spring-configuration-metadata.json +[WARNING] attoparser-2.0.5.RELEASE.jar, spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar, spring-boot-starter-2.7.5.jar, spring-boot-starter-json-2.7.5.jar, spring-boot-starter-logging-2.7.5.jar, spring-boot-starter-thymeleaf-2.7.5.jar, spring-boot-starter-tomcat-2.7.5.jar, spring-boot-starter-web-2.7.5.jar, thymeleaf-3.0.15.RELEASE.jar, thymeleaf-extras-java8time-3.0.4.RELEASE.jar, thymeleaf-spring5-3.0.15.RELEASE.jar, unbescape-1.1.6.RELEASE.jar define 2 overlapping resources: +[WARNING] - META-INF/LICENSE.txt +[WARNING] - META-INF/NOTICE.txt +[WARNING] attoparser-2.0.5.RELEASE.jar, jackson-annotations-2.13.4.jar, jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jdk8-2.13.4.jar, jackson-datatype-jsr310-2.13.4.jar, jackson-module-parameter-names-2.13.4.jar, jakarta.annotation-api-1.3.5.jar, javafx-base-17-win.jar, javafx-base-17.jar, javafx-controls-17-win.jar, javafx-controls-17.jar, javafx-fxml-17-win.jar, javafx-fxml-17.jar, javafx-graphics-17-win.jar, javafx-graphics-17.jar, jul-to-slf4j-1.7.36.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, logback-classic-1.2.11.jar, logback-core-1.2.11.jar, slf4j-api-1.7.32.jar, slms-1.0-SNAPSHOT.jar, snakeyaml-1.30.jar, spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar, spring-boot-starter-2.7.5.jar, spring-boot-starter-json-2.7.5.jar, spring-boot-starter-logging-2.7.5.jar, spring-boot-starter-thymeleaf-2.7.5.jar, spring-boot-starter-tomcat-2.7.5.jar, spring-boot-starter-web-2.7.5.jar, spring-context-5.3.23.jar, spring-core-5.3.23.jar, spring-expression-5.3.23.jar, spring-jcl-5.3.23.jar, spring-web-5.3.23.jar, spring-webmvc-5.3.23.jar, sqlite-jdbc-3.36.0.3.jar, thymeleaf-3.0.15.RELEASE.jar, thymeleaf-extras-java8time-3.0.4.RELEASE.jar, thymeleaf-spring5-3.0.15.RELEASE.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar, unbescape-1.1.6.RELEASE.jar define 1 overlapping resource: +[WARNING] - META-INF/MANIFEST.MF +[WARNING] jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/NOTICE +[WARNING] jackson-annotations-2.13.4.jar, jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jsr310-2.13.4.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/LICENSE +[WARNING] spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-context-5.3.23.jar, spring-webmvc-5.3.23.jar define 3 overlapping resources: +[WARNING] - META-INF/spring.handlers +[WARNING] - META-INF/spring.schemas +[WARNING] - META-INF/spring.tooling +[WARNING] javafx-controls-17-win.jar, javafx-graphics-17-win.jar define 3 overlapping resources: +[WARNING] - META-INF/substrate/config/reflectionconfig-aarch64-android.json +[WARNING] - META-INF/substrate/config/reflectionconfig-arm64-ios.json +[WARNING] - META-INF/substrate/config/resourcebundles +[WARNING] javafx-base-17-win.jar, javafx-controls-17-win.jar, javafx-fxml-17-win.jar, javafx-graphics-17-win.jar define 1 overlapping resource: +[WARNING] - META-INF/substrate/config/reflectionconfig.json +[WARNING] jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jdk8-2.13.4.jar, jackson-datatype-jsr310-2.13.4.jar, jackson-module-parameter-names-2.13.4.jar, log4j-api-2.17.2.jar define 1 overlapping classes: +[WARNING] - META-INF.versions.9.module-info +[WARNING] log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar define 1 overlapping resource: +[WARNING] - META-INF/DEPENDENCIES +[WARNING] maven-shade-plugin has detected that some files are +[WARNING] present in two or more JARs. When this happens, only one +[WARNING] single version of the file is copied to the uber jar. +[WARNING] Usually this is not harmful and you can skip these warnings, +[WARNING] otherwise try to manually exclude artifacts based on +[WARNING] mvn dependency:tree -Ddetail=true and the above output. +[WARNING] See https://maven.apache.org/plugins/maven-shade-plugin/ +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] Discovered module-info.class. Shading will break its strong encapsulation. +[WARNING] spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-context-5.3.23.jar, spring-core-5.3.23.jar, spring-expression-5.3.23.jar, spring-jcl-5.3.23.jar, spring-web-5.3.23.jar, spring-webmvc-5.3.23.jar define 2 overlapping resources: +[WARNING] - META-INF/license.txt +[WARNING] - META-INF/notice.txt +[WARNING] spring-web-5.3.23.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/web-fragment.xml +[WARNING] spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar define 2 overlapping resources: +[WARNING] - META-INF/additional-spring-configuration-metadata.json +[WARNING] - META-INF/spring-configuration-metadata.json +[WARNING] attoparser-2.0.5.RELEASE.jar, spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar, spring-boot-starter-2.7.5.jar, spring-boot-starter-json-2.7.5.jar, spring-boot-starter-logging-2.7.5.jar, spring-boot-starter-thymeleaf-2.7.5.jar, spring-boot-starter-tomcat-2.7.5.jar, spring-boot-starter-web-2.7.5.jar, thymeleaf-3.0.15.RELEASE.jar, thymeleaf-extras-java8time-3.0.4.RELEASE.jar, thymeleaf-spring5-3.0.15.RELEASE.jar, unbescape-1.1.6.RELEASE.jar define 2 overlapping resources: +[WARNING] - META-INF/LICENSE.txt +[WARNING] - META-INF/NOTICE.txt +[WARNING] attoparser-2.0.5.RELEASE.jar, jackson-annotations-2.13.4.jar, jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jdk8-2.13.4.jar, jackson-datatype-jsr310-2.13.4.jar, jackson-module-parameter-names-2.13.4.jar, jakarta.annotation-api-1.3.5.jar, javafx-base-17-win.jar, javafx-base-17.jar, javafx-controls-17-win.jar, javafx-controls-17.jar, javafx-fxml-17-win.jar, javafx-fxml-17.jar, javafx-graphics-17-win.jar, javafx-graphics-17.jar, jul-to-slf4j-1.7.36.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, logback-classic-1.2.11.jar, logback-core-1.2.11.jar, slf4j-api-1.7.32.jar, slms-1.0-SNAPSHOT.jar, snakeyaml-1.30.jar, spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-boot-2.7.5.jar, spring-boot-autoconfigure-2.7.5.jar, spring-boot-starter-2.7.5.jar, spring-boot-starter-json-2.7.5.jar, spring-boot-starter-logging-2.7.5.jar, spring-boot-starter-thymeleaf-2.7.5.jar, spring-boot-starter-tomcat-2.7.5.jar, spring-boot-starter-web-2.7.5.jar, spring-context-5.3.23.jar, spring-core-5.3.23.jar, spring-expression-5.3.23.jar, spring-jcl-5.3.23.jar, spring-web-5.3.23.jar, spring-webmvc-5.3.23.jar, sqlite-jdbc-3.36.0.3.jar, thymeleaf-3.0.15.RELEASE.jar, thymeleaf-extras-java8time-3.0.4.RELEASE.jar, thymeleaf-spring5-3.0.15.RELEASE.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar, unbescape-1.1.6.RELEASE.jar define 1 overlapping resource: +[WARNING] - META-INF/MANIFEST.MF +[WARNING] jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/NOTICE +[WARNING] jackson-annotations-2.13.4.jar, jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jsr310-2.13.4.jar, log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar, tomcat-embed-core-9.0.68.jar, tomcat-embed-el-9.0.68.jar, tomcat-embed-websocket-9.0.68.jar define 1 overlapping resource: +[WARNING] - META-INF/LICENSE +[WARNING] spring-aop-5.3.23.jar, spring-beans-5.3.23.jar, spring-context-5.3.23.jar, spring-webmvc-5.3.23.jar define 1 overlapping resource: +[WARNING] - META-INF/spring.tooling +[WARNING] javafx-controls-17-win.jar, javafx-graphics-17-win.jar define 3 overlapping resources: +[WARNING] - META-INF/substrate/config/reflectionconfig-aarch64-android.json +[WARNING] - META-INF/substrate/config/reflectionconfig-arm64-ios.json +[WARNING] - META-INF/substrate/config/resourcebundles +[WARNING] javafx-base-17-win.jar, javafx-controls-17-win.jar, javafx-fxml-17-win.jar, javafx-graphics-17-win.jar define 1 overlapping resource: +[WARNING] - META-INF/substrate/config/reflectionconfig.json +[WARNING] jackson-core-2.13.4.jar, jackson-databind-2.13.4.2.jar, jackson-datatype-jdk8-2.13.4.jar, jackson-datatype-jsr310-2.13.4.jar, jackson-module-parameter-names-2.13.4.jar, log4j-api-2.17.2.jar define 1 overlapping classes: +[WARNING] - META-INF.versions.9.module-info +[WARNING] log4j-api-2.17.2.jar, log4j-to-slf4j-2.17.2.jar define 1 overlapping resource: +[WARNING] - META-INF/DEPENDENCIES +[WARNING] maven-shade-plugin has detected that some files are +[WARNING] present in two or more JARs. When this happens, only one +[WARNING] single version of the file is copied to the uber jar. +[WARNING] Usually this is not harmful and you can skip these warnings, +[WARNING] otherwise try to manually exclude artifacts based on +[WARNING] mvn dependency:tree -Ddetail=true and the above output. +[WARNING] See https://maven.apache.org/plugins/maven-shade-plugin/ +[INFO] Attaching shaded artifact. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 21.407 s +[INFO] Finished at: 2025-11-26T22:49:20+08:00 +[INFO] ------------------------------------------------------------------------ +[INFO] Attaching shaded artifact. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 21.411 s +[INFO] Finished at: 2025-11-26T22:49:20+08:00 +[INFO] ------------------------------------------------------------------------ +[Pipeline] echo +✓ GUI Swing JAR 打包成功 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] echo +✓ CLI JAR 打包成功 +[Pipeline] } +[Pipeline] // stage +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times. + +> Task :android:preBuild UP-TO-DATE +> Task :android:preDebugBuild UP-TO-DATE +> Task :android:mergeDebugNativeDebugMetadata NO-SOURCE +> Task :android:checkKotlinGradlePluginConfigurationErrors +> Task :android:generateDebugResValues +> Task :android:dataBindingMergeDependencyArtifactsDebug +> Task :android:generateDebugResources +> Task :android:packageDebugResources +> Task :android:parseDebugLocalResources +> Task :android:mapDebugSourceSetPaths +> Task :android:checkDebugAarMetadata +> Task :android:createDebugCompatibleScreenManifests +> Task :android:extractDeepLinksDebug +> Task :android:mergeDebugResources +> Task :android:processDebugMainManifest +> Task :android:dataBindingGenBaseClassesDebug +> Task :android:processDebugManifest +> Task :android:javaPreCompileDebug +> Task :android:mergeDebugShaders +> Task :android:compileDebugShaders NO-SOURCE +> Task :android:generateDebugAssets UP-TO-DATE +> Task :android:mergeDebugAssets +> Task :android:compressDebugAssets +> Task :android:desugarDebugFileDependencies +> Task :android:processDebugManifestForPackage +> Task :android:mergeDebugJniLibFolders +> Task :android:checkDebugDuplicateClasses +> Task :android:mergeDebugNativeLibs +> Task :android:mergeLibDexDebug + +> Task :android:stripDebugDebugSymbols +Unable to strip the following libraries, packaging them as they are: libimage_processing_util_jni.so. + +> Task :android:validateSigningDebug +> Task :android:writeDebugAppMetadata +> Task :android:writeDebugSigningConfigVersions +> Task :android:processDebugResources +> Task :android:compileDebugKotlin NO-SOURCE + +> Task :android:compileDebugJavaWithJavac +ע: ijЩļʹû򸲸ѹʱ API +ע: йϸϢ, ʹ -Xlint:deprecation ±롣 + +> Task :android:mergeExtDexDebug +> Task :android:dexBuilderDebug +> Task :android:processDebugJavaRes NO-SOURCE +> Task :android:mergeDebugGlobalSynthetics +> Task :android:mergeProjectDexDebug +> Task :android:mergeDebugJavaResource +> Task :android:packageDebug +> Task :android:createDebugApkListingFileRedirect +> Task :android:assembleDebug + +Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. + +You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. + +For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. + +BUILD SUCCESSFUL in 2m 7s +37 actionable tasks: 37 executed +列出 APK 目录: + E еľ 鵵 + к 3E90-E7BD + + E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\android\build\outputs\apk\debug Ŀ¼ + +2025/11/26 22:51 15,439,118 SLMS-debug.apk + 1 ļ 15,439,118 ֽ + 0 Ŀ¼ 115,919,507,456 ֽ +?找到 SLMS-debug.apk +?Android APK 打包完成: slms-debug.apk +[Pipeline] echo +✓ Android APK 打包成功 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +[Pipeline] // parallel +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (7.5 重命名和验证制品) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 重命名和验证制品 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] bat +============================================ + 文件重命名和验证阶段 +============================================ + +[1/4] 处理 CLI JAR... + ?找到源文? slms-1.0-SNAPSHOT-cli-shaded.jar + ⚠️ 警告: slms-cli.jar 文件大小异常 (!SIZE_MB! MB),预?> 30 MB + +[2/4] 处理 GUI JAR... + ?找到源文? slms-1.0-SNAPSHOT-gui-swing.jar + ⚠️ 警告: slms-gui.jar 文件大小异常 (!SIZE_MB! MB),预?> 35 MB + ?创建启动脚本: run-gui.bat + ?创建说明文档: README-GUI.txt + +[3/4] 处理 Web WAR... + ?找到源文? slms-1.0-SNAPSHOT.war + ⚠️ 警告: slms-web.war 文件大小异常 (!SIZE_MB! MB),预?> 10 MB + +[4/4] 处理数据库文?.. + ?找到数据库文? library.db + ?复制成功: target\library.db + +============================================ + 制品验证报告 +============================================ + +[CLI 应用] + ?slms-cli.jar - !SIZE_MB! MB + +[GUI 应用] + ?slms-gui.jar - !SIZE_MB! MB + ?run-gui.bat - 存在 + ?README-GUI.txt - 存在 + +[Web 应用] + ?slms-web.war - !SIZE_MB! MB + +[Android 应用] + ?slms-debug.apk - !SIZE_MB! MB + +[数据库] + ?library.db - !SIZE_KB! KB + +============================================ + 重命名阶段完? +============================================ +[Pipeline] } +[Pipeline] // script +[Pipeline] echo +✓ 制品重命名和验证完成 +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (7.6 创建Windows安装包 (jpackage)) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 使用 jpackage 创建 EXE 和 MSI ========== +[Pipeline] script +[Pipeline] { +[Pipeline] bat +============================================ + jpackage 打包阶段 +============================================ + +[1/6] 检?jpackage 工具... + ?jpackage 可用: 21.0.9 + +[2/6] 检?WiX Toolset... +ʱӦ \WiX +[Pipeline] echo +⚠️ jpackage 打包失败,但继续构建 +[Pipeline] echo +错误信息: script returned exit code 255 +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (8. 归档制品) +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 归档构建制品 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] bat +当前工作目录: +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS + +列出 target 目录: + E еľ 鵵 + к 3E90-E7BD + + E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\target Ŀ¼ + +2025/11/26 22:49 37,997,894 slms-1.0-SNAPSHOT-cli-shaded.jar +2025/11/26 22:49 37,996,654 slms-1.0-SNAPSHOT-gui-swing.jar +2025/11/26 22:49 107,026 slms-1.0-SNAPSHOT.jar +2025/11/26 22:49 37,997,894 slms-cli.jar +2025/11/26 22:49 37,996,654 slms-gui.jar + 5 ļ 152,096,122 ֽ + 0 Ŀ¼ 115,804,581,888 ֽ + +列出 android/build/outputs/apk/debug 目录: + E еľ 鵵 + к 3E90-E7BD + + E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\android\build\outputs\apk\debug Ŀ¼ + +2025/11/26 22:51 15,439,118 SLMS-debug.apk + 1 ļ 15,439,118 ֽ + 0 Ŀ¼ 115,804,577,792 ֽ + +[Pipeline] bat +检查制品文?.. + +[CLI 应用] +?找到 slms-cli.jar + 大小: 37997894 bytes + +[GUI 应用 - Swing 版本] +?找到 slms-gui.jar + 大小: 37996654 bytes +?找到 run-gui.bat +?找到 README-GUI.txt + +[Web 应用] +?找到 slms-web.war + 大小: 38168523 bytes + +[Android 应用] +?找到 slms-debug.apk + 大小: 15439118 bytes + +[数据库文件] +?找到 library.db +[Pipeline] echo +开始归档制品... +[Pipeline] archiveArtifacts +Archiving artifacts +Recording fingerprints +[Pipeline] echo +✓ 制品归档完成 +[Pipeline] echo +保存制品到 stash... +[Pipeline] stash +Stashed 11 file(s) +[Pipeline] echo +✓ 制品已保存到 stash +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (9. 推送头歌) +[Pipeline] parallel +[Pipeline] { (Branch: 9.1 推送源代码到 main) +[Pipeline] { (Branch: 9.2 推送制品到 release) +[Pipeline] stage +[Pipeline] { (9.1 推送源代码到 main) +[Pipeline] stage +[Pipeline] { (9.2 推送制品到 release) +[Pipeline] tool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] tool +[Pipeline] tool +[Pipeline] envVarsForTool +[Pipeline] envVarsForTool +[Pipeline] withEnv +[Pipeline] { +[Pipeline] withEnv +[Pipeline] { +[Pipeline] echo +========== 推送源代码到头歌 main 分支 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] echo +========== 推送构建制品到头歌 release 分支 ========== +[Pipeline] script +[Pipeline] { +[Pipeline] withCredentials +[Pipeline] echo +恢复制品从 stash... +[Pipeline] unstash +Masking supported pattern matches of %EDUCODER_PASS% +[Pipeline] { +[Pipeline] bat +Already a complete repository +[Pipeline] echo +✓ 制品已恢复 +[Pipeline] withCredentials +Masking supported pattern matches of %EDUCODER_PASS% +[Pipeline] { +[Pipeline] bat +remote: . Processing 1 references +remote: Processed 1 references in total +To https://bdgit.educoder.net/pu6zrsfoy/slms.git + c770217..153aa01 HEAD -> main +[Pipeline] } +[Pipeline] // withCredentials +[Pipeline] echo +✓ 源代码推送到 main 成功 +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +当前工作目录: +E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS +复制制品?artifacts 目录... +Ѹ 1 ļ +?已复?CLI JAR +Ѹ 1 ļ +?已复?GUI JAR +Ѹ 1 ļ +?已复?Web WAR +⚠️ 警告: 找不?Web WAR/JAR +Ѹ 1 ļ +?已复?Android APK +⚠️ 警告: 找不?APK 文件 +Ѹ 1 ļ +?已复?library.db +⚠️ 警告: 找不?library.db +Ѹ 1 ļ +?已复?run-gui.bat +Ѹ 1 ļ +?已复?README-GUI.txt + +制品列表: + E еľ 鵵 + к 3E90-E7BD + + E:\2025-2026\GitAIOps\jenkins\.jenkins\workspace\SLMS\artifacts Ŀ¼ + +2025/11/26 22:51 . +2025/11/26 22:51 .. +2025/11/26 11:25 36,864 library.db +2025/11/26 22:51 600 README-GUI.txt +2025/11/26 22:51 393 run-gui.bat +2025/11/26 22:49 37,997,894 slms-cli.jar +2025/11/26 22:51 15,439,118 SLMS-debug.apk +2025/11/26 22:49 37,996,654 slms-gui.jar +2025/11/26 22:49 38,168,523 slms-web.war + 7 ļ 129,640,046 ֽ + 2 Ŀ¼ 115,205,939,200 ֽ +准备 release 分支内容... +克隆 release 分支... +release 分支不存在,创建新分?.. +Reinitialized existing Git repository in E:/2025-2026/GitAIOps/jenkins/.jenkins/workspace/SLMS/release-repo/.git/ +fatal: a branch named 'release' already exists +error: remote origin already exists. +[release b6826e7] release: 鏋勫缓鍒跺搧 Build #124 + 5 files changed, 3 insertions(+), 2 deletions(-) +推送制品到头歌 release 分支... +remote: +remote: Create a new pull request for 'release': +remote: https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEB_lab/compare/main...release +remote: +remote: . Processing 1 references +remote: Processed 1 references in total +To https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEB_lab.git + e6c9cec..b6826e7 release -> release +?推送成功! +?已清理临时目? +[Pipeline] } +[Pipeline] // withCredentials +[Pipeline] echo +✓ 制品推送到 release 分支成功 +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +[Pipeline] // parallel +[Pipeline] } +[Pipeline] // stage +[Pipeline] stage +[Pipeline] { (Declarative: Post Actions) +[Pipeline] script +[Pipeline] { +[Pipeline] echo +========== 流水线执行完成 ========== +[Pipeline] echo +当前构建结果: UNSTABLE +[Pipeline] echo +当前构建状态: UNSTABLE +[Pipeline] echo +========== 清理残留进程 ========== +[Pipeline] bat +清理?slms 相关的残留进?.. +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +ûпʵ +?进程清理完成 +[Pipeline] echo +========== 检查制品文件 ========== +[Pipeline] bat +[Pipeline] echo +⚠️ 检查制品文件时出错: script returned exit code 255 +[Pipeline] echo +========== 发送邮件通知 ========== +[Pipeline] echo +准备发送邮件: ⚠️ SLMS 构建不稳定 - Build #124 +[Pipeline] echo +收件人: 602924803@qq.com +[Pipeline] emailext +Sending email to: 602924803@qq.com +[Pipeline] echo +✓ 邮件已发送到: 602924803@qq.com +[Pipeline] echo +✓ 邮件主题: ⚠️ SLMS 构建不稳定 - Build #124 +[Pipeline] } +[Pipeline] // script +[Pipeline] } +[Pipeline] // stage +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // withEnv +[Pipeline] } +[Pipeline] // node +[Pipeline] End of Pipeline +[Gitea] do not publish assets due to build being non-Successfully +Finished: UNSTABLE