Giter Club home page Giter Club logo

joylau-springboot-daemon-windows's Introduction

一款将 SpringBoot 项目做成Windows Service 的 Maven 插件

包括但不限于 SpringBoot ,任何打成 java jar 包运行的 Maven 项目都可以使用

编写初衷

  • 公司有个项目
  • Java 部分的全部使用的是SpringBoot
  • 该项目的部署环境是 Windows
  • 公司想把 各个 SpringBoot 的模块托管一下
  • 托管的使用方式要简单,易用,测试在打包部署的时候要很容易上手
  • 期间尝试过 Spring Boot Admin 和 Jenkins,都说不好用...
  • 于是就想着 将Spring Boot 的服务制作成 Windows 服务,这样基本上会操作电脑的人都会使用了,够简单易用的了吧
  • 花了一上午时间将其中一个 Spring Boot 模块制作成了 Windows Service
  • 发现再做其他的模块的时候,很多工作都是重复的,心想着能够将这个功能提取出来就好了
  • 于是就写了这个 Maven 插件

使用演示地址:

MP4 : http://image.joylau.cn/blog/joylau-springboot-daemon-service-video.mp4

1.1.RELEASE

  • 增加 java 运行时 vm 参数和程序参数的分别配置
  • bat 文件会自动申请管理员权限,不需要手动右键以管理员身份运行

怎么使用?

  • 使用方法很简单,和普通的 Maven 插件一样使用就可以了,如下
    <plugins>
        <plugin>
            <groupId>cn.joylau.code</groupId>
            <artifactId>joylau-springboot-daemon-windows</artifactId>
            <version>1.1.RELEASE</version>
            <executions>
                <execution>
                    <id>make-win-service</id>
                    <phase>package</phase>
                    <goals>
                        <goal>make-win-service</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

注意:

  1. 这里的 phase 写的是 package,意思是该插件在 mvn package 的时候调用,你也可以根据不同的需求来更改,比如 install, test等等
  2. goal 写 make-win-service 就可以了,不需要改动
  3. 一般情况下我们的SpringBoot项目会有其他父项目,这时打包会使用 spring-boot-maven-plugin 插件的 repackage,这样的情况的话,请将该插件放置最后面,否则服务运行的话将提示没有主属性
  • 在你的项目中按照以上的方式引入插件后,现在可以 打包了
    mvn package

打包过程中,看到如下日志信息,便制作成功了: joylau-springboot-daemon-windows-package-info

此时,在你项目的target目录下会生成一个 jar 包名字 一样的压缩包 进入文件夹,解压这个压缩包,你会看见如下内容的文件 joylau-springboot-daemon-windows-package-file 注意:

  1. 5个 bat 文件,双击运行无反应时,请右键以管理员的身份运行
  2. 各文件的文件名无特殊情况,不需要修改
  3. 一旦安装成了 Windows 服务,目录下的文件就不要移动了
  4. 命令运行时,可能会提示安装.NET,安装完成就可运行命令了,不过现在大部分的 Windows 服务器或者个人电脑都会默认安装了.NET,没有的话启用一下就好了,如下图: joylau-springboot-daemon-windows-.NET
  5. 运行各个命令是注意提示信息,例如卸载完服务都的状态为NonExistent,刚安装完服务后的状态为Stopped,服务成功启动的状态为Started...等等 joylau-springboot-daemon-windows-service-status

扩展参数

想要在服务启动时添加自定义参数,如 SpringBoot 的配置参数或者 JMV 参数? 像如下配置即可:

    <plugin>
        <groupId>cn.joylau.code</groupId>
        <artifactId>joylau-springboot-daemon-windows</artifactId>
        <version>1.1.RELEASE</version>
        <executions>
            <execution>
                <id>make-win-service</id>
                <phase>package</phase>
                <goals>
                    <goal>make-win-service</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <vmOptions>-Xms1024m -Xmx2048m</vmOptions>
            <programArguments>--server.port=9090</programArguments>
        </configuration>
    </plugin>

上面配置了JVM 参数 和 Spring Boot 应用的启动端口

使用注意

  • 打包使用过程中需要联网
  • 文档中有些图片可能看不到,再次刷新下页面就可以
  • 服务的id为artifactId,服务的名称为artifactId+version,服务的描述为description

joylau-springboot-daemon-windows's People

Contributors

failscholar avatar joylau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

joylau-springboot-daemon-windows's Issues

[乱码]xml中 arguments设置问题

你好,我在使用时,遇到了一个小问题,就是package出的jar包,执行时需要类似下面这样子:

java -Dfile.encoding=utf8 -jar xx.jar

但是目前我查看打包后的xml中,arguments为-jar xx.jar
请问,我需要如何配置?或者采用您更新后的插件?

windows 启动服务提示无法启动

日志名称: Application
来源: ibmmq-service
日期: 2020/8/22 18:05:35
事件 ID: 0
任务类别: 无
级别: 错误
关键字: 经典
用户: 暂缺
计算机: EXCHANGE
描述:
无法启动服务。System.ComponentModel.Win32Exception: 系统找不到指定的文件。
在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
在 winsw.WrapperService.StartProcess(Process processToStart, String arguments, String executable)
在 winsw.WrapperService.OnStart(String[] _)
在 System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
事件 Xml:



0
2
0
0x80000000000000

1109906
Application
EXCHANGE



无法启动服务。System.ComponentModel.Win32Exception: 系统找不到指定的文件。
在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
在 winsw.WrapperService.StartProcess(Process processToStart, String arguments, String executable)
在 winsw.WrapperService.OnStart(String[] _)
在 System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

日志如何拆分

设置在某个地方输出 但是我Log4j2怎么使用呢? 不可能吧日志全部输出到一个文件中啊

日志如何拆分

你好 我SpringBoot 用到了这个 我用log4j2 做日志 但是运行后 日志还是被输出到了 logs/.err.log logs/.out.log logs/*.wrapper.log 请问 如何设置 ?

jar被替换后,服务无法运行

我这边生成的jar包需要进行加密操作,我把未加密的jar包替换掉。安装服务可以运行,但启动服务就失败了。我需要怎么修改,使得加密后的jar可以正常运行

生成的服务 运行后乱码

生成的bat 运行后乱码

如果用Java -Dfile.encoding=UTF-8 -jar xx.jar 则是正常提交和获取数据
用服务的方式启动 参数和数据出现中文乱码 在pom配置了-Dfile.encoding=UTF-8 也无效 请问如何正确配置编码

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.