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)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库