Windows下Jenkins自动启动jar包

本来以为是挺简单的一件事,没想到折腾了这么久,遇到各种坑,记录一下:

set BUILD_ID=dontkillmyass

set port=9035

for /f "tokens=1-5" %%i in ('netstat -ano ^|findstr ":%port%"') do (

echo kill the process %%m who use the port

taskkill /pid %%m -t -f

goto q

)

:q

start /B D:\JDK\jdk-11.0.2\bin\java.exe -jar -Dfile.encoding=UTF-8 D:\jenkins\Home\workspace\Mall\target\mall-0.0.1-SNAPSHOT.jar

powershell -Command "Start-Sleep -Seconds 80"

逐个解释一下各语句以及遇到的坑:

1、set BUILD_ID=dontkillmyass

参考jenkins Process leaked file descriptors-CSDN博客 这篇文档。我这里使用的是Execute Windows batch command这个工具,也遇到同样的问题,加上后就没事了。主要就是"Jenkins默认会在Build结束后Kill掉所有的衍生进程"这句话的描述,导致怎么都起不来jar包。

2、for /f "tokens=1-5" %%i in ('netstat -ano ^|findstr ":%port%"') do (

echo kill the process %%m who use the port

taskkill /pid %%m -t -f

goto q

)

:q

用goto写这么别扭(可能还会极端情况下有问题),主要是因为不跳出去的话剩下的循环就会报错,知道jenkins的任务判定为Failure。

3、start /B D:\JDK\jdk-11.0.2\bin\java.exe -jar -Dfile.encoding=UTF-8 D:\jenkins\Home\workspace\Mall\target\mall-0.0.1-SNAPSHOT.jar

要后台运行,只能用start;要把日志打印到console上,要加/B;其他的正常运行即可;

4、powershell -Command "Start-Sleep -Seconds 80"

最后一句,要想等它输出日志多一些看到欢迎logo,就加上时间"硬控",时髦点说就是"没空硬等"。。。

相关推荐
木心术112 小时前
Windows系统下MySQL与AI工具集成方案:数据存储与调用实践
人工智能·windows·mysql
beyond阿亮12 小时前
Hermes Agent快速接入 QQ 完整教程|QQ聊天使用AI智能体
人工智能·windows·ai·openclaw·hermes agent
DONSEE广东东信智能读卡器13 小时前
用PowerShell实现Windows 本地 WSS/HTTPS 自签名证书配置方法
windows·网络协议·https·powershell·身份证阅读器
DogDaoDao16 小时前
Windows 下 Git 报错:`touch` 无法识别 —— 原因分析与 7 种解决方案(从入门到精通)
windows·git·程序员·npm·powershell·cmd·touch
Ai.den17 小时前
Windows 安装 MinerU 3.x 实现本地批量解析 PDF
人工智能·windows·ai
xfddlm17 小时前
在Windows上配置Claude Code
windows
AI行业学习17 小时前
Notepad++ 下载+安装+插件集合 完整教程(Windows,安全无捆绑)
windows·notepad++
__zRainy__18 小时前
uni-app 全局容器实战系列(二):Vite 虚拟模块
windows·uni-app
Omics Pro18 小时前
前沿学科:量子生物学!
大数据·数据库·人工智能·windows·redis·量子计算
IceSugarJJ19 小时前
Windows下VSCode+ WSL项目启动流程
linux·windows·vscode·ubuntu·wsl