windows系统Jenkins部署spring boot一直无返回结果问题解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/achenyuan/article/details/82823182

前言

由于我们公司java应用是部署在windows服务器上的,jenkins在部署spring boot时会一直等待直到超时才结束,这个主要原因是因为spring boot 启动一直是在前台运行(控制台一直在打印),所以jenkins会认为这个任务没有执行完成,就会一直在执行。如果是linux系统可以使用nohup命令,但windows就不行,没这个命令,所以我把java 应用做成windows服务,每次部署成功只要重启服务即可。

winsw制作windows服务器

winsw(github地址源码地址exe下载地址)是一个开源的专门用于制作windows服务的小工具,我们可以利用它来讲java程序做成windows服务。
在下载地址里下载最新版winsw。
准备三样东西

  • xxx.jar
  • xx.xml
  • xxx.exe

以MyApp.jar为例,注意xml和exe名字要保持一致。新建一个project文件夹

创建MyApp.xml文件

<service>
    <id>MyApp</id>
    <name>MyApp</name>
    <description>This runs Spring Boot as a Service.</description>
    <env name="MYAPP_HOME" value="%BASE%"/>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "%BASE%\MyApp.jar"</arguments>
    <logmode>rotate</logmode>
</service>

上面的MYAPP_HOME是系统环境变量,我们需要像设置JAVA-HOME一样设置。地址指向jar文件地址,当然如果我们不使用环境变量的方式,那就直接在xml里指定jar的目录地址。我就是这样的方式。所以我的MyApp.xml文件为

<service>
    <id>Kelaien</id>
    <name>Kelaien</name>
    <description>This runs Spring Boot as a Service.</description>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>
    <logmode>rotate</logmode>
</service>

arguments是java命令后的一些参数,是自定义的。
id和name就是注册到windows服务的名字,建议和文件名保持一致,这里就是MyApp

创建MyApp.exe

其实不是重新创建而是重命名,将下载的winsw.exe重命名为MyApp.exe。注意名字要和MyApp.xml保持一致
官方这么说的:you have to rename the winsw.exe to MyApp.exe so that its name matches with the MyApp.xml,注意是必需

创建MyApp.jar

将准备好的jar重命名为MyApp.jar,当然,这个可以不是MyApp,也可以是其它的。比如MyApp.xml里的配置是这样的

<arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>

是小写。

安装服务

至些就制作完成,就可以使用install/uninstall命令了
安装服务:MyApp.exe install
卸载服务:MyApp.exe uninstall
启动服务:net start MyApp
停止服务:net stop MyApp

windows下没有重启服务,我们可以先stop服务再start服务。批处理如下
restart.bat

net stop %1
net start %1

重启服务:restart 服务名

MyApp.exe in

测试

按如下方式测试结果如下
在这里插入图片描述
终于成功了

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/82823182
今日推荐