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

相关推荐
心态与习惯1 小时前
mac 下 java 调用 gurobi 不能加载 jar
java·jar·mac·cplex·gurobi
久绊A3 小时前
Python 基本语法的详细解释
开发语言·windows·python
chenbin52011 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯11 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
菜鸟单飞14 小时前
介绍一款非常实用的PDF阅读软件!
windows·pdf·电脑
陆鳐LuLu14 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
[奋斗不止]15 小时前
Jenkins 配置 Credentials 凭证
jenkins·jenkins 配置凭证
流星白龙18 小时前
【Linux】35.封装 UdpSocket(2)
linux·运维·windows
waicsdn_haha18 小时前
Visual Studio Code 2025 安装与高效配置教程
c语言·ide·windows·vscode·微软·编辑器·win7
ChoSeitaku20 小时前
12.重复内容去重|添加日志|部署服务到Linux上(C++)
linux·c++·windows