参考:用winsw让任何Windows程序都能运行为服务

简介
在linux下部署springboot项目是一件很简单的事,直接后台运行就行了,最多写个shell脚本开机自启就行了。我们最近做的项目需要在windows上部署,在windows上运行jar有一个问题,运行的时候会弹出一个cmd窗口,并且不能关闭,关闭的话程序就停止了。spring官方推荐使用winsw来将springboot项目作为服务运行,参考https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows。

安装使用

下载地址:https://github.com/kohsuke/winsw/releases
winsw的使用比较简单。从github上下载:winsw下载,要下载的文件有两个:1.winsw.exe程序;2.xml配置文件。

我下载的是最新版本的WinSW.NET4.exe和sample-minimal.xml。下载完成后,将下载的两个文件及springboot项目的jar包放在同一个文件夹中。

需要将winsw执行程序跟xml改成同样的名字,推荐使用项目名+Service的命名方式,

比如:WinSW.NET4.exe改成 myProjectService.exe,sample-minmal.xml 改成myProjectService.xml。

编辑myProjectService.xml文件,配置如下图:

配置完成后,命令行进入winsw所在的文件夹,执行添加服务命令

myProjectService.exe install

其中myProjectService是你修改后的名称。

注意:命令提示符界面要用管理员权限进入,否则安装服务会失败,提示“WMI Operation failure: AccessDenied”

进入服务界面,可以看到myProject服务已经生成了:

命令提示符界面-启动服务。

net start myProject

删除服务
删除服务分为两步:1停止服务;2删除服务,都是在命令行界面实现。

停止运行服务。

net stop myProject

删除服务。

myProjectService.exe uninstall

最后
上面所有的命令都可以写在批处理文件中,部署的时候就可以实现一键部署了。

将命令写在批处理文件中,希望将批处理文件默认为管理员权限打开,可以在批处理文件的开头写上:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

cd /d "%~dp0"

转载:https://blog.csdn.net/qq_28566071/article/details/80882503

使用winsw部署spring boot jar 项目的更多相关文章

  1. Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)

    最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱 ...

  2. 【Tomcat】使用Tomcat部署Spring Boot项目生成的jar包

    介绍 简单来说,Tomcat是一个免费的,用于Java Web应用以及其它Web应用的一个Web服务器.(简单地概括一下,可能有误) 下载与安装 本文章目标是把Spring Boot Web项目生成的 ...

  3. 从零部署Spring boot项目到云服务器(正式部署)

    上一篇文章总结了在Linux云服务器上部署Spring Boot项目的准备过程,包括环境的安装配置,项目的打包上传等. 链接在这里:http://www.cnblogs.com/Lovebugs/p/ ...

  4. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  5. 使用Jenkins部署Spring Boot项目

    jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...

  6. 【docker】docker部署spring boot项目在服务器上

    IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...

  7. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  8. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  9. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

随机推荐

  1. redis(四)

    hash hash用于存储对象,对象的格式为键值对 命令 设置 设置单个属性 HSET key field value 设置多个属性 HMSET key field value [field valu ...

  2. .net异常机制

    异常机制简介 当CPU运行到一些非法的指令,例如除零错误,访问内存页失败等指令,CPU会生成一个硬件异常,不同的异常有固定的异常代码作为标识符,异常产生以后CPU暂时不能继续执行后续的指令—因为后续的 ...

  3. Office 2016 for Mac 64位16.14.1(180613)安装包&激活

    注意,本页面是属于Mac操作系统使用的Office,如需Windows版的Office请点击下面的传送门. Windows版Office:https://www.itpwd.com/12.html 激 ...

  4. 深入理解JVM(10)——Class文件结构

    什么是“JVM”的无关性 Java具有平台无关性,也就是任何操作系统都能够运行Java代码,之所以能够实现这一点,是因为Java运行在虚拟机上,不同的操作系统都有各自的Java虚拟机,从而实现一次编译 ...

  5. c语言单片机中断服务程序

    #include <reg52.h> #define uchar unsigned char #define uint unsigned int uint count; void dela ...

  6. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  7. 让你提升命令行效率的 Bash 快捷键

    生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) ...

  8. Exception in thread "main" java.lang.StackOverflowError at java.util.ArrayList$SubList.rangeCheckForAdd(Unknown Source)

    Exception in thread "main" java.lang.StackOverflowError at java.util.ArrayList$SubList.ran ...

  9. 对Unity的Resources目录进行改名

    项目用的是Unity5.5版本,开发的时候将相关的图集.预制对象资源都放在 Resources 目录下,而真机使用的是 StreamingAssets 目录下的资源. Resources(不分层级)在 ...

  10. ssh-keygen 基本用法

    ssh-keygen命令用于为"ssh"生成.管理和转换认证密钥,它支持RSA和DSA两种认证密钥. ssh-keygen(选项) -b:指定密钥长度: -e:读取openssh的 ...