jar包排除lib包并使用WinSw注册成服务

maven打包jar文件大问题。解决记录

1、修改pom.xml,打包jar包的时候排除lib

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- lib依赖包输出目录,打包的时候不打进jar包里 -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 压缩jar包,打出来的jar中没有了lib文件夹 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>

2、使用maven打包后会有lib包脱离出来

3、更新启动命令

java -Dloader.path="lib包的路径(相对和绝对都可以)" -jar ***.jar

4、使用WinSw部署成服务 由于 lib是外部映入的,我注册启动一直不成功就直接使用 bat文件的方式启动 使用相对路径和绝对路径都可以

下载地址

Releases · winsw/winsw · GitHub

4.1、配置启动命令bat文件 (这个文件的路径对应的WinSw.xml中的 executable)

java -Dfile.encoding=UTF-8  -Dloader.path=C:\***\lib -jar C:\***-0.0.1-SNAPSHOT.jar
​
pause

4、2配置WinSw.xml文件

<!--
  命令说明:
    WinSW-x64.exe install   安装服务
    WinSW-x64.exe uninstall 卸载服务
    WinSW-x64.exe start     开启服务
    WinSW-x64.exe stop      停止服务
    WinSW-x64.exe restart   重新启动服务
    WinSW-x64.exe status    检查服务的当前状态
-->
<service>
 
  <!-- 指定Windows内部用于标识服务的ID。这在系统中安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成 -->
  <id>***_9000</id>
 <!-- 此元素指定要启动的可执行文件。它可以是绝对路径,也可以只指定可执行文件名称并从中搜索PATH(尽管请注意,服务通常以不同的用户帐户运行,因此它可能与PATHShell有所不同。) -->
 <!-- <executable>java </executable>-->
  <!--<startarguments> -Dfile.encoding=UTF-8 -Dloader.path=C:\**\lib - C:\***.jar</startarguments>-->
  <!-- 由于 lib是外部映入的,我注册启动一直不成功就直接使用 bat文件的方式启动 
    使用相对路径和绝对路径都可以
    -->
  <executable>C:\***.bat </executable>
  <!-- 可选服务的 简短显示名称,可以包含空格和其他字符。它不应太长,例如<id>,并且在给定系统的所有服务中也必须是唯一的 -->
  <name>***_9000</name>
​
  <!-- 可选服务的可读描述。选择该服务后,它将显示在Windows服务管理器中。 -->  
  <description>(***_9000)</description>
      <!-- 可选的可重复元素控制了winsw启动的进程失败后的行为(例如,执行带有非零退出码的退出操作) -->
  <!-- 延迟属性的可能后缀是sec/secs/min/mins/hours/day/days。如果未设置,延迟属性默认为0 -->
  <onfailure action="restart" delay="20 sec"/>
      <!-- 控制了Windows SCM重新设置故障计数的时间 -->
  <resetfailure>8 hour</resetfailure>
      <!--
    OPTION: priority
    Desired process priority.
    在较低的优先级上启动一个进程,以避免干扰计算机的交互使用
    Possible values: Normal, Idle, High, RealTime, BelowNormal, AboveNormal
    Default value: Normal
  -->
  <priority>Normal</priority>
    
  <!--
    OPTION: stoptimeout
    当服务被要求停止时,winsw首先尝试调用GenerateConsoleCtrlEvent 方法(类似于Ctrl+C),然后等待长达15秒的时间,让进程自行退出
    如果这样做了,进程关闭还是失败了(或者如果进程没有控制台),
    然后winsw会调用终止进程的API函数来立即终止服务。
    Default value: 15 seconds
  -->
  <stoptimeout>15 sec</stoptimeout>
        <!--
      OPTION: startmode
      该元素指定Windows服务的启动模式。它可以是下列值之一:开机、系统、自动或手动
      Supported modes: Automatic, Manual, Boot, System (latter ones are supported for driver services only)
      Default mode: Automatic
    -->
    <startmode>Automatic</startmode>
    
  <!--
    OPTION: logpath
    设置日志存放目录
    Sets a custom logging directory for all logs being produced by the service wrapper
    Default value: Directory, which contains the executor
  -->
  <logpath>%BASE%\log\</logpath>
</service>
 

4.3 执行 WinSW-x64.exe install 安装服务 和WinSW-x64.exe start 开启服务 就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值