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,就加上时间"硬控",时髦点说就是"没空硬等"。。。

相关推荐
Sakura_j_h_6 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
隔窗听雨眠9 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
Helix25012 小时前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
Java开发追求者13 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
Helix25017 小时前
Windows ETW与KQL实战:终端性能诊断与遥测数据分析指南
windows·性能诊断·kql·etw·azure monitor·遥测数据·tracert
陈葛杰18 小时前
Adobe Premiere Pro2025安装教程
windows·adobe·开源软件·1024程序员节
承渊政道19 小时前
iOS远程控制电脑用什么好?iPhoneiPad远程控制Windows电脑最佳方案2026横评
windows·ios·远程控制·1024程序员节·iphone ipad
易点云徐源19 小时前
PDF 默认打开方式刚修好,过一分钟又变成“未知应用”?使用 ProcMon 成功抓出后台程序
windows·pdf
kaixin_learn_qt_ing20 小时前
Jenkins
运维·jenkins
我是大猴子20 小时前
py how claude work项目分析
运维·服务器·windows·1024程序员节