Jenkins项目里启动多个Java应用程序且构建完成后不被关闭

在完成Jenkins实现自动编译打包部署时,我遇到了以下几个问题:

问题一:当我们在构建步骤中启动Java应用程序时,在构建完成后总是会被Jenkins杀掉,导致启动的程序不能保留下来。

解决方法:我先是安装了插件:Post build task,然后在构建后执行中选择Post Build Task 

然后在Script中输入你启动Java应用程序的命令,启动Java程序的命令前加上命令start /B,/B选项表示将Java应用程序作为后台任务启动,即便在关闭终端或结束进程后,服务也可以继续运行。

当然上面的构建步骤中,就正常的执行编译打包。(PS:每个新增的构建步骤,它的起始路径都是workspace目录下的你的项目名称的文件夹)

 在这一番操作后,项目构建完成时,你在构建过程中启动的Java应用程序就得以保留;那么第二个问题来了。

 

问题二:我们上次启动的Java应用程序没有关闭,当我们git仓库更新时,Jenkins再一次构建的话,就会遇到端口被占用问题,从而构建失败。

解决方法:我写先了一个.bat文件,并且将这文件放入Jenkins项目文件夹内。

复制代码
@echo off
setlocal

set port=8085  //请把port换成你的端口
echo 正在检测端口 %port%...
netstat -ano | findstr :%port% > nul

if %ERRORLEVEL% EQU 0 (
    for /f "tokens=5" %%p in ('netstat -ano ^| findstr :%port%') do (
        echo 端口 %port% 被占用,进程ID是 %%p,正在尝试结束进程...
        taskkill /F /PID %%p > nul
        echo 进程已被结束。
    )
) else (
    echo 端口 %port% 未被占用。
)
复制代码

然后在构建步骤的第一步,我们就先执行这个.bat文件,避免端口被占用且相应的Java应用程序还运行着影响到我们后面的mvn clean package和更新过的Java应用程序的启动。(PS:如果你上一次构建后的Java应用程序正在运行着,那你下一次构建时mvn clean package是会出错的)

 如果构建时在cmd.exe /C xxx.bat时出现错误,可能是Jenkins权限不够导致的,可以参考一下Jenkins使用之如何让Jenkins以管理员身份来执行批处理命令 - caimiao - 博客园 (cnblogs.com)

posted @   caimiao  阅读(626)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示