SpringBoot打包jar包并后台运行

原创 2017年09月28日 00:24:45

最近又进步了。我一直习惯直接在Intellij Idea中直接运行写好的程序,不过也是因为仅仅是写个模拟接口而已。后来到新公司要负责java后台,开始习惯把项目部署到外部Tomcat去测试,或者打成war包让运维去linux上面部署。不过,想来这也是因为只是在做一个目前看起来并不是很重要的项目而已。如果同时做的项目多了,好像自己的做法就不好了。

老大最近点醒了我,原来SpringBoot是可以打包成jar包,而不依赖容器就可以运行的。我立即进行了研究和尝试,分别在win7和ubuntu上面进行了测试,终于达到效果。

一、首先,必须做好一个运行流畅没有毛病的项目。

二、修改pom文件的开头部分:


packaging本来就是jar,我的项目因为不明白这个作用被我改成war了。

三、在application.properties中加入server.port=9090,端口号自己要改一下,别和其他的冲突,建议有文案设置,给一个项目规定一个端口号。因为jar包部署之后是一个项目独占一个容器。调用的时候项目名被隐藏了。

四、在Idea下方的Terminal或者命令行定位到项目文件夹,运行:mvn clean package命令。

有资料说clean前面有个-,结果大半天我没弄出来。后来回家研究发现老提"lean"出错,于是我就写成mvn -cclean package运行,结果还成了。网上很多资料是没有-的。

前提是要另外安装maven。

提示一下,这里最容易出错:

1.网上很多资料在解释这里的问题的时候都去修改pom,加了很多什么东西。后来发现根本不需要,容易出现包不能下载的error,不仅如此,pom中有些提示出错的包还要删去。命令行后面加-e可以打印异常提示。

2.我在项目中写了单元测试,有三个方法,其中有一个方法运行会出错,平时用war部署发现不了问题,打jar包好像一个个都要运行一遍,结果我的一个单元测试方法出问题就不能打包成功,删除就好了。


可以看到jar包的位置在target文件夹下面。

五、部署

win7和linux是一样的。把jar包上传到linux,规划一个文件夹。将命令行定位到该文件夹下,运行命令(win7和linux一样):

java -jar yuedaoapi-1.0.0.jar

就这样,jar包就部署好了。试着调用一下,没有任何问题。

不过如果要在后台调用,需要运行:

java -jar yuedaoapi-1.0.0.jar > log_yuedaoapi.file 2>&1 &


这个方法在linux没有问题,在win7中没有成功。命令行窗口关闭服务就终止了。

如果要关掉后台运行的服务,释放被占用的端口。就要记住运行成功后给出的进程pid,比如上面图中的2637

用kill -9 2637就可以杀死。

如果不小心忘记了记录这个pid,可以用以下两种方式都可以找到进程,看到pid

netstat -ap|grep 9090

lsof -i:9090


这时候再kill就好了。

看一下调用效果:


看得出来效果不错,项目名称被隐藏了。我的Idea终于被解放了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

nohup命令在linux系统,控制jar包后台运行

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld...

Linux后台运行java的jar包

前言 需要执行的jar为:sysrd-test.jar,并已经上传到了Linux服务器上! 直接运行方式 java -jar sysrd-test.jar通过这种方式部署的时候,SecureCRT...

Android 关于引用jackson的jar包混淆报错或打包后运行报错崩溃

json是个好东西, 现在CS架构的数据传递方式主要是XML 和 json. 两者都有各自的类似的解析方法. 而Android的开发环境已经内置了支持json和XML的解析, 而且给力! 但用得多了肯...
  • stzy00
  • stzy00
  • 2014-09-05 23:25
  • 3049

Java GUI打包成jar包运行、注意事项、不弹出黑框、自带jre

我们在开发Java GUI后需要打包运行 步骤如下:       在eclipse 中直接点击export,然后选择 runnable jar,然后选择Main 类           最后Finis...

解决关于Eclipse打包jar包后 运行结果错误的问题

这个问题针对解决在eclipse中运行结果正常,但是在打包jar后运行结果出现错误的问题,尤其是有中文输入输出的时候错误更加明显的情况,很可能读者遇见和笔者一样诡异的问题,就是在IO输入输出上对字符编...

包的定义及导入(打包编译、运行以及jar命令的使用)

1.包的编译与运行 首先为什么要使用打包命令呢? 如果有多个人共同开发一个项目的时候,这时肯定会出现类名称相同的情况。这样以来开发就比较困难!因为相同的文件会出现覆盖的情况!于是我们采用了包的概念...

可运行jar包的几种打包/部署方式

java项目开发中,最终生成的jar,大概可分为二类,一类是一些通用的工具类(不包含main入口方法),另一类是可直接运行的jar包(有main入口方法),下面主要讲的是后者,要让一个jar文件可直接...
  • MitKey
  • MitKey
  • 2016-07-27 11:21
  • 2651

Android 关于引用jackson的jar包混淆报错或打包后运行报错崩溃

json是个好东西, 现在CS架构的数据传递方式主要是XML 和 json. 两者都有各自的类似的解析方法. 而Android的开发环境已经内置了支持json和XML的解析, 而且给力! 但用得多了肯...

Hadoop小兵笔记【三】利用Eclipse将wordcount打包成可以运行在hadoop上的jar包

hadoop版本为hadoop1.2.1 eclipse版本为eclipse-standard-kepler-SR2-win32-x86_64 WordCount.java为hadoop-...

利用MAVEN打包可运行jar包,包括依赖的第三方包

转载自:http://bglmmz.iteye.com/blog/2058914 背景: 另一篇文章说了如何利用IDEA来打包,现在来说说如何利用MAVEN打包   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)