一篇关于Maven项目的jar包Shell启动脚本

使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都是很零散,没有设计到应用场景,这里打算个人总结一下,一方面作为自己的学习笔记,另一方面作为大家的技术分享

一篇关于Maven项目的jar包Shell启动脚本

这里是我写好的一个项目的启动脚本,这里需要注意几个地方

1:wins的编辑器,换行符是\r\n,而linux的换行符是\n,所以在我们编辑好了.sh的启动脚本后,会发现在linux上启动会出现 {\r 不是内部命令,xxxx行脚本出错,这里作为开发者一定要注意,那么,怎么解决呢,使用notePad++打开。选择----》视图-----》符号显示----------》显示所有符号

一篇关于Maven项目的jar包Shell启动脚本

然后打开查找替换如下

一篇关于Maven项目的jar包Shell启动脚本

替换完成后。显示如下:

一篇关于Maven项目的jar包Shell启动脚本

对比第一张图显示,换行符是不是不一样了呢?

下面讲解一下,启动脚本的一些参数,和启动命令

SERVER=/usr/local/netty/mqtt           这里是我们打包的jar包的存放路径

echo                                                   控制台输出的提示符,就像我们的Syste.out.println()

JAVA_HOME                                     JDK安装路径

cd                                                       切换目录

classPath                                           jar包存放目录

nohup                                                linux执行命令

java -cp top-transfer.jar com.top.application.mqtt.activit.ActivitReceiveTopic start &                      java虚拟机启动main方法命令

注释:java -cp top-transfer.jar com.top.application.mqtt.activit.ActivitReceiveTopic start  也可以单独的作为mian方法的启动命令,只是这种启动方式,不是以进程的方式启动,当我们关闭控制台的时候进程也就关闭了,启动的进程也随之关闭,程序就不继续运行了。

下面我们来说明一下,Maven工程的打包方式,如上所述,maven工程必然会引用很多其他的jar包依赖,这个时候我们需要把第三方的jar包引用同时打包到我们的工程里面,这方便Mavne已经做好了插件

常用的插件maven-assembly-plugin,这个普及度比较高。

我们在pom.xml中添加如下代码

一篇关于Maven项目的jar包Shell启动脚本

我们对开发完成的项目进行maven打包

一篇关于Maven项目的jar包Shell启动脚本

Run后看到如下提示信息

一篇关于Maven项目的jar包Shell启动脚本

BUILD SUCCESS说明打包成功,找到打包好的目录,看到出现了两个jar包,我们反编译去看看jar包的内容

一篇关于Maven项目的jar包Shell启动脚本

反编译结果如下,发现第一个包没有jar包依赖

一篇关于Maven项目的jar包Shell启动脚本

查看第二个包,如下包括我们的配置文件,第三方jar包都被打包进来了。

一篇关于Maven项目的jar包Shell启动脚本

我们在注意看,在jar包中有一个MANIFEST.MF的文件,发现这个文件里路了我们打包好的jar包的配置信息,就相当于说明书一样。

我们在注意看上面说到的打包插件中有这样一行带代码

一篇关于Maven项目的jar包Shell启动脚本

在mainClass标签中制定我们的jar包main方法,在期内添加main方法

一篇关于Maven项目的jar包Shell启动脚本

然后我们重新打包,反编译第二个jar包

一篇关于Maven项目的jar包Shell启动脚本

多了main方法,这样我们就制定jar包的启动窗口。至此打包完成

在linux 我们还要使用 chmod a+x startup.sh 把编辑好的脚本添加到linux的北部shell启动脚本中。

然后执行   ./startup.sh ,大功告成。

上一篇:深入理解java虚拟机---jdk8新特性(二)


下一篇:一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)