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

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

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

然后打开查找替换如下

替换完成后。显示如下:

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

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

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打包

Run后看到如下提示信息

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

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

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

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

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

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

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

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

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

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

一篇关于Maven项目的jar包Shell启动脚本的更多相关文章

  1. 如何查看Maven项目的jar包依赖

    问题 十年以前写java项目总会干这么一个事情: 调包. java项目往往依赖了很多第三方jar包,而这些jar包又有他自己依赖的第三方jar包,从而就能形成一个依赖树. 而程序运行要把这些所有的依赖 ...

  2. 使用idea生成maven项目的jar包(转)

    第一步  第二步  第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651

  3. 为什么项目的jar包会和tomcat的jar包冲突?

    为什么项目的jar包会和tomcat的jar包冲突? 碰到这个问题,猜测tomcat启动时会将自己的lib和项目的lib在逻辑上归并为一个大的lib,但是并没有做版本区分以及去重,这样相同的包可能就有 ...

  4. Java文档注释导出帮助文档和项目的jar包导入和导出。

    1.1      文档注释导出帮助文档 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@au ...

  5. maven学习(六)——在别的项目中引用通过Maven安装生成的项目的jar包

    1.新建HelloFriend项目,同时建立Maven约定的目录结构和pom.xml文件 HelloFriend    | --src | -----main | ----------java | - ...

  6. 【maven】maven 子项目如何使用父项目的jar包

    如果父pom中使用的是 <dependencies>....</dependencies> 方式, 则子pom会自动使用pom中的jar包 如果父pom使用 <depen ...

  7. java全栈day13----Eclipse项目的jar包导出与使用jar包

    01eclipse快捷键 Ctrl+T:查看所选中类的继承树 例如,在下面代码中,选中Teacher类名,然后按Ctrl+T,就会显示出Teacher类的继承关系 * B: 查看所选中方法的源代码 ...

  8. fatjar eclipse4.4 java项目的jar包一起打包 net.sf.fjep.fatjar_0.0.32.jar

    1.下载net.sf.fjep.fatjar_0.0.32.jar  http://files.cnblogs.com/files/milanmi/net.sf.fjep.fatjar_0.0.32. ...

  9. Springboot项目的jar包目录结构

    上图为一个由Luyten工具反编译后的一个jar包 说明: SpringBoot提供的bootstrap的类是放到包的最外面,比如上面的org.springframework.boot.loader. ...

随机推荐

  1. Hive语法

    1.Select 语法 SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_ ...

  2. MySQL Crash Errcode: 28 - No space left on device

    一台MySQL服务器突然Crash了,检查进程 ps -ef | grep -i mysql 发现mysqld进程已经没有了, 检查错误日志时发现MySQL确实Crash了.具体如下所示: 注意日志中 ...

  3. 嵌入式Linux引导过程之1.1——Xloader的xloader.lds

    本文中的所有代码版本都是基于ST的SpearPlus开发板的. xloader是在系统上电之后,执行完ROM中的frimware后最先开始执行的用户程序,它的体积很小,执行的功能也很简单,主要是对系统 ...

  4. mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】

    1.使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2.使用limit限制查询结果的数量: 上图中的0,代表查询 ...

  5. 数据结构--hashtable(散列表)

    散列 散列又叫hash.是通过关键字把数据映射到指定位置的一种数据结构.理想的散列表,是一个包含关键字的固定大小的数组 哈希表存储的是键值对,其查找的时间复杂度与元素数量多少无关,哈希表在查找元素时是 ...

  6. 新工具︱微软Microsoft Visual Studio的R语言模块下载试用Ing...(尝鲜)

    笔者:前几天看到了以下的图片,着实一惊.作为R语言入门小菜鸟,还是觉得很好看,于是花了一点时间下载下来试用了一下,觉得还是挺高大上的. 就是英文不好是硬伤.下面贴给小白,我当时的下载步骤与遇见的问题. ...

  7. Java利用递归算法统计1-6的数组排列组合数

    Java利用递归算法统计1-6的数组排列组合数 1.设计源码 /** * @Title:ArrayCombination.java * @Package:com.you.data * @Descrip ...

  8. vxi总线

    20世纪80年代后期,仪器制造商发现GPIB总线和VME总线产品无法再满足军用测控系统的需求了.在这种情况下,HP.Tekronix等五家国际著名的仪器公司成立了VXIbus联合体,并于1987年发布 ...

  9. Array.from()

    es6 Array.from() 方法将两类对象转为真正的数组 用法:用于将两类对象转为真正的数组:类似数组的对象和可遍历(iterable)的对象(包含ES6新增的数据结构Set和Map); 说明: ...

  10. ASP.NET CORE的Code Fist后Models更改了怎么办?

    上次我写到MVC的code fist后,自动生成数据库并自动生成web页面了 点击打开链接 那么随着项目需求的逐步明确,model变化了怎么办呢?其实和上次一样的,有两条关键的语句要记住 Add-Mi ...