winsw打包jar
参考:
https://www.jianshu.com/p/fc9e4ea61e13
https://blog.csdn.net/qq_28566071/article/details/80882503
spring官方推荐使用winsw来将springboot项目作为服务运行,参考https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows
1.把java程序打包为jar包
2.下载winsw
winsw是一款可将可执行程序安装成Windows Service的开源工具,github:https://github.com/kohsuke/winsw/releases
前言
由于我们公司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文件为
<configuration>
<!-- ID of the service. It should be unique accross the Windows system-->
<id>OSCAR</id>
<!-- Display name of the service -->
<name>OSCAR(powered by WinSW)</name>
<!-- Service description -->
<description>这是winsw生成的服务</description>
<!-- Path to the executable, which should be started -->
<executable>java</executable>
<arguments>-jar mingpeng-0.0.1-SNAPSHOT.jar</arguments>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>logs/service</logpath>
<logmode>rotate</logmode>
</configuration>
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>
1
是小写。
安装服务
至些就制作完成,就可以使用install/uninstall命令了
安装服务:MyApp.exe install
卸载服务:MyApp.exe uninstall
检查状态:MyApp.exe status
启动服务:MyApp.exe start或net start MyApp
停止服务:MyApp.exe stop或net stop MyApp
重启服务:MyApp.exe restart或
windows下没有重启服务,我们可以先stop服务再start服务。批处理如下
restart.bat
net stop %1
net start %1
1
2
重启服务:restart 服务名
问题
如果报“WMI Operation failure: AccessDenied”那就创建一个批处理文件,然后以管理员权限运行,
比如如下installDongLi.bat:
D:\tmp\dongliService\DongLi.exe install
pause
1
2
测试
按如下方式测试结果如下
终于成功了
winsw做包装其它程序
winsw也可以包装其它exe文件,或可启动文件。做成windows服务。以nginx为例
将winsw.exe改名为NginxService.exe
创建NginxService.xml如下
<service>
<id>NginxService</id>
<name>NginxService</name>
<description>This runs Spring Boot as a Service.</description>
<executable>D:\soft\nginx\nginx-1.15.2\nginx.exe</executable>
</service>
将上面文件放到nginx安装文件包下
创建installService.bat批处理文件
D:\soft\nginx\nginx-1.15.2\NginxService.exe install
配置完成后,命令行进入winsw所在的文件夹,执行“spider-1.0.exe install”,就注册服务了。
如果不再需要这个服务,使用spider-1.0.exe uninstall即可卸载服务。start启动和stop关闭服务
转载于:https://www.cnblogs.com/xinglongbing521/p/11157742.html
winsw打包jar相关推荐
- spring boot 打包jar,jar没有主目录清单
(1)spring boot 打包jar 如果有不对的还请指点,知道自己技术部怎么样,第一次写,写的有点乱 理解一下 1.在POM.xml文件下添加如下代码:注意:version.confi ...
- 【Java 虚拟机原理】Dalvik 虚拟机 ( 打包 Jar 文件和 Dex 文件 | 反编译 Dex 文件 | 分析 Dex 文件反编译结果 )
文章目录 前言 一.打包 Jar 文件和 Dex 文件 1.示例代码 2.打包 Jar 文件 3.打包 Dex 文件 二.反编译 Dex 文件 三.分析 Dex 文件 1.Student 类相关信息 ...
- java ear war_[转] 基于Java的打包jar、war、ear包的作用与区别详解
以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果.除jar以外对于J2EE来说还有war和ear.区 ...
- android 打包jar包
昨天,自己用到别人的jar包的内容,后来,公司要求在之前的基础上增加几个功能,所以需要修改jar包的内容.别人的源代码给了我,我修改后进行打包成jar包.不过自己却不会用android studio ...
- idea-spark-sbt 打包jar
1.打开idea下的terminal窗口 2.只打包部分项目 sbt insight-import/clean insight-import/assembly 这表示只打包主目录下的insight- ...
- exe4j打包jar成exe文件(将jdk打包在内)
用myEclipse -> Export 生成.class文件,然后再用 exe4j 打包工具选择刚导出的 .class 文件 之前用exe4j打包有过示例,按照之前的博客文档http://bl ...
- Intellij Idea打包jar
https://blog.csdn.net/xuemengrui12/article/details/74984731 步骤: 1. 选中Java项目工程名称,在菜单中选择 File->proj ...
- Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发
今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福, 每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信 ------------送给一直努力的你 今天 ...
- Gradle实践之自定义打包jar+Log开关自动关闭
2019独角兽企业重金招聘Python工程师标准>>> 上一篇博客介绍了Gradle实践之多渠道自动化打包+版本号管理.由于我在公司里主要是做SDK开发的,这次我想介绍一下如何使用G ...
最新文章
- oracle 10g sqlplus登录显示问号,oracle sqlplus 连接时,connection to 显示的是问号
- java hbase创建_hadoop组件介绍及python 连接Hbase
- Spring IoC 学习(3)
- 快捷键 = 效率,但 IDEA 快捷键记不住怎么办?
- zookeeper源码分析之一服务端启动过程
- 计算机网络简易测试仪,测线仪
- Vue 进阶 (二)
- ubuntu查看gpu使用率_如何监控GPU卡的使用率(Linux)
- BenchmarkDotNet v0.12x新增功能
- 数据科学和人工智能技术笔记 十五、支持向量机
- php 对象转数组_PHP的垃圾回收机制-PHP高级面试题+详解
- Abp VNext 项目创建简介
- 认识Spring核心容器IoC/DI
- 《恋上数据结构第1季》单向链表、双向链表
- Python 标准库 —— string
- 黑马程序员————java线程之间的通信
- 第三章(循环) 编程题 2
- 109 个实用 shell 脚本
- linux拷贝文件和目录命令,Linux 命令 - cp: 拷贝文件和目录
- c#加粗代码_C# 字体加粗按钮
热门文章
- 在Android Studio中使用tess-Two
- pycharm ValueError: source code string cannot contain null bytes
- VC代码设置禁用窗口最大化按钮禁用拖拽
- gaussdb mysql对比_GaussDB(for MySQL)
- vue订餐app,使用vue-router
- 《现代职业教育》杂志正规吗?现代职业教育杂志社现代职业教育编辑部投稿要求
- labview下载地址
- Jmeter-PerfMon Metrics Collector监控解析
- 大学本科的计算机专业学生,应该达到什么能力水平,才算上合格?
- 曙光服务器通过ipmi安装系统,曙光服务器ipmi部署记录资料