Spring Boot部署之Web项目jar包形式

  上篇Spring Boot部署之 web项目war包形式介绍了war包形式的部署,本文介绍jar形式运行。jar形式相对简单,相对复杂的内容是如何将其注册为Linux服务。

  一、打jar包

    1、修改pom.xml配置

            

             

     2、执行package(对于module执行package之前需要执行root项目的install,否则package执行失败)

              

     3、执行完成之后,在默认的target目录或者指定目录会生成一个rpc_provider的jar

  二、执行jar

    java -jar rpc_provider.jar   (具体可参考Spring Boot外部配置属性注入)。

  三、注册为Linux服务

    Linux下运行的软件通过将其注册为服务,这样可以通过命令开启、关闭以及保持开机启动等功能。主流的Linux大多使用init.d或systemd来注册服务,下面就以这两种方式下注册服务示例将自定义jar注册为Linux服务。操作如下:

    1、基于init.d部署

          ln -s /home/lifish/myproject/jardemo-0.0.1-SNAPSHOT.jar /etc/init.d/jardemo

      由于本文开发使用环境为systemd管理服务的Linux,所以无法进行验证。如果需要验证,可使用如下命令:

          service jardemo start

          service jardemo stop

          chkconfig jardemo on (开机启动)

      日志保存在/var/log目录下。

    2、基于systemd部署

      1)在/etc/systemd/system添加文件jardemo.service,文件内容为:

             

        注意Description=jardemo和ExecStart=/usr/bin/java -jar /home/lifish/myproject/jardemo-0.0.1-SNAPSHOT.jar

      2)启动服务 systemctl start jardemo

              

      3)开机启动 systemctl enable  jardemo

      4)项目日志journalctl -u jardemo

              

       需要注意的是这是个java项目要jdk支持,如果Linux环境不存在jdk需要先按照jkd否则运行失败。

 

 

  补充:在windows环境中启动可能提示端口号被占用,但实际使用netstat -ano| findstr port 查询这个端口号并未占用。可能原因就是端口号被Hyper-V保留了。试下netsh interface ipv4 show excludedportrange protocol=tcp,如果被保留了,就在打开或关闭功能里把Hyper-V去掉并重启电脑。

  本案例在win10中执行即碰到端口号被占用但是找不到相关进程的问题。最后关闭Hyper-V功能并重启机器解决了。

  注意:通过Maven中配置maven-plugin插件然后通过命令maven clean package将项目打成的jar是一个Fat jar。所谓Fat jar即这种jar不仅仅包含本项目中源码所编译生成的java类文件,还会包含项目所依赖的第三方库及有关项目启动的相关信息(项目代码、项目依赖包、应用启动相关文件等)。

posted on 2021-05-22 19:36  池塘里洗澡的鸭子  阅读(910)  评论(0编辑  收藏  举报