前言
目前在公司负责开发一个网络模块,该模块常驻内存,监听某个端口进行通信。初期使用的时java -jar xxx.jar 命令运行。每次都需要登录远程服务器,打开cmd,输入上面的命令。由于无线网络缓慢,远程桌面卡顿,导致每天耗费大量时间,作为一个技术人员,自然需要改变这样的情况,于是这里使用了jenkins进行自动部署,其中就遇到一个需求,需要将jar打包成系统服务,方便自动部署后进行服务重启。
系统环境
image.png我的使用场景
- 配置好pom.xml
- 提交代码到码云
- 触发jenkins的构建,产生target文件夹,
- jenkins执行批处理,拷贝target文件到
D:\Program Files\lightai-net
关闭服务,再启动服务.
从而实现该网络模块的自动化部署。
构建完成之后的脚本如下
image.png
打包jar 成服务的步骤
- 准备好jar包。这里不做过多解释。这里提供下我的pom.xml中build配置。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.insigmaunited.lightai.main.LightaiServer</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中
<mainClass>com.insigmaunited.lightai.main.LightaiServer</mainClass>
需要修改你自己的入口类。
在项目的目录下执行 mvn clean package
即可产生文件夹 target
(如果配置了jenkis构建,则该命令是jenkins完成)
-
拷贝
target
进入D:\Program Files\lightai-net
-
下载 javaservice文件。 http://download.forge.ow2.org/javaservice/JavaService_2_0_10-amd64.zip
image.png
解压之后,拷贝javaservice.exe
到d:programfiles\lightai-net
此时的文件夹如下:
-
在当前文件夹 打开命令窗口。按住shift,点击鼠标右键,选择
在此处打开命令窗口
执行如下命令
JavaService.exe -install lightai-net "%JAVA_HOME%"/jre/bin/server/jvm.dll -Xms500m -Xmx500m -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;"%CD%"/lib;"D:\Program Files\lightai-net\lightai-net-1.0.0.jar";"%CD%"/classes -start com.insigmaunited.lightai.main.LightaiServer -method main -out "D:\Program Files\lightai-net\log.log" -err "D:\Program Files\lightai-net\err.log"
命令的参数解释
-
-install lightai-net
表示注册的服务名 是 lightai-net -
"%JAVA_HOME%"/jre/bin/server/jvm.dll -Xms500m -Xmx500m -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;"%CD%"/lib;"D:\Program Files\lightai-net\lightai-net-1.0.0.jar";"%CD%"/classes
表示jvm路径和classpath路径。 如果你配置和我相同,只需要修改"D:\Program Files\lightai-net\lightai-net-1.0.0.jar"
为你的jar包。 -
-start com.insigmaunited.lightai.main.LightaiServer -method main
表示服务启动时执行的入口类和方法。 -
-out "D:\Program Files\lightai-net\log.log" -err "D:\Program Files\lightai-net\err.log"
表示服务执行中输出到指定文件log.log ,如果出现错误,则输出到err.log
执行命令的结果
image.png
- 查看服务。
通过控制面板
进入管理工具
再进入服务
即可查看我们的新增的服务
image.png
吐槽
这个打包,耗时较多。主要是网络上文章很多,每一个都有一些差异。我直接拷贝无法执行运行。这里建议大家如果首次尝试,最好确保目录我一样。
网友评论