官网地址:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
1、把启动脚本文件解压到项目下
脚本文件下载地址:https://download.csdn.net/download/weixin_51311218/18804217
2、 项目中添加插件
<!-- 指定项目的打包插件信息 -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>dubbo-service</finalName>
<!-- 指定打包描述文件的位置:相对项目根目录的路径 -->
<!-- assembly打包的描述文件 -->
<descriptors>
<descriptor>
assembly/assembly.xml
</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
3、编写assembly描述文件
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<!-- 该字符会添加到最终tar.gz包的名称后面,作为后缀 -->
<id>assembly</id>
<!-- 指定打包的格式为tar.gz,该类型压缩包在linux中比较常见 -->
<!--支持 zip,tar,tar.gz,tar.bz2,jar,dir,war 等 -->
<formats>
<format>tar.gz</format>
</formats>
<!-- 在tar.gz压缩包中是否包含根文件夹,该根文件夹名称和tar.gz去掉id后缀一致 -->
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<!-- 将项目根路径下assembly/bin路径中的内容打包到压缩包中的根目录下的bin目录中 -->
<fileSet>
<!-- 相对项目根路径的相对路径 -->
<directory>assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<!-- 设置最终tar.gz中该文件夹下的权限,跟linux权限写法一致 -->
<fileMode>0755</fileMode>
</fileSet>
<!-- 将项目根路径下assembly/conf路径中的内容打包到压缩包中的根目录下的conf目录中 -->
<fileSet>
<directory>assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<!-- 设置其linux权限 -->
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<!-- 将所有依赖的jar包打包到压缩包中的根目录下的lib目录中 -->
<!-- 此lib目录中包含自己开发的项目jar包以及demo_service.jar,还有第三方的jar包 -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
4、将打包后的程序做成系统服务
4.1 Linux CentOS7系统服务描述文件
4.1.1 进入/usr/lib/systemd/system
, 新建dubbo.service
文件,写入如下内容。
[Unit]
#服务描述
Description=dubbo Service
#设置在某个服务启动后启动:这里为指mysql服务启动后再启动本服务
After=network.target mysqld.service
[Service]
#后台运行的形式
Type=forking
#启动命令,执行该脚本
ExecStart=/path/start.sh
#重启命令,执行该脚本
ExecReload=/path/restart.sh
#停止命令,执行该脚本
ExecStop=/path/stop.sh
#启动失败时,执行重启命令
Restart=on-failure
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.1.2加载服务并设置启动
systemctl reload *.service #重新加载服务配置文件
然后就可以启动服务了,
systemctl start dubbo.service即可
设置开机启动: systemctl enable dubbo.service
4.2 Window系统服务
下载windows系统服务生成工具: https://github.com/winsw/winsw/releases
按照官网提供方式提供配置文件
<service>
<!-- ID of the service. It should be unique across the Windows system-->
<id>myapp</id>
<!-- Display name of the service -->
<name>MyApp Service (powered by WinSW)</name>
<!-- Service description -->
<description>This service is a service created from a minimal configuration</description>
<!-- Path to the executable, which should be started --> <executable>%BASE%\myExecutable.exe</executable>
</service>