IDEA部署项目,并结合Shell脚本运行Java程序
一、概述
在实际开发中,我们写好的代码,往往打成war包或jar包,通过winscp或其他软件将其上传至服务器,然而这样非常大的一个弊端就是不利于开发,为什么这么说呢?假如我们刚刚将springboot项目达jar包通过winscp部署在linux系统中,然而各种突如其来、意想不到的bug接踵而来,你在本地测试调试bug,难道你要一次又一次的打jar包,上传至服务器?我想你会疯了吧,哈哈,言归正传。
运行java项目的本质,就是让jvm运行.class文件(纯属个人理解,意思你懂就好),所以我们为何不尝试直接将本地classes目录与服务器关联呢,这样直接上传我们调试修改的.class文件即可,而强大的IDEA工具可以帮我们将本地classes文件与服务器的classes关联映射,这样更是方便了我们开发。这里可以参考:IDEA自动部署WEB工程至远程服务器(学习笔记)将本地classes关联映射服务器的对应目录。
二、测试准备
①使用IDEA将本地class与远程服务器的classes目录做关联映射(IDEA自动部署WEB工程至远程服务器(学习笔记))
②编写shell脚本运行java程序
三、正式测试
服务器端做如下规划:

客户端IDEA只需要配置好目录关联映射即可:(IDEA自动部署WEB工程至远程服务器(学习笔记))当然,也可以通过手动将本地classes、依赖包lib
①准备对应目录

②准备SpringBoot项目

③本地classes目录与服务器的目录做关联映射
第一步:按照如下步骤配置

第二步:

第三步:

第四步:

最后一步:将整个classes目录上传至服务器

④上传工程依赖lib至对应的文件
⑤编写shell脚本启动该程序
#!/bin/bash
#测试程序 运行脚本 #jdk路径
JAVA_HOME="/home/software/jdk1.8" #项目的根目录
APP_HOME="/home/app/test" #pid的输出目录
PIDFILE="${APP_HOME}/Application.pid" #指定class目录
CLASSPATH=$APP_HOME/bin for i in $APP_HOME/lib/*.jar;do
CLASSPATH="$CLASSPATH":"$i"
done echo ${CLASSPATH}
MAINCLASS="com.test.demo.DemoApplication" #后台运行程序
#nohup $JAVA_HOME/bin/java -classpath $CLASSPATH $MAINCLASS& #运行java程序
$JAVA_HOME/bin/java -classpath $CLASSPATH $MAINCLASS #将进程id写入文件
ps -ef | grep "Application" |grep -v grep|awk '{print $2}'>${PIDFILE}
⑥通过shell脚本启动该程序:sh start.sh

⑦通过浏览器访问:192.168.229.128:8080/test?name=张三(这里确保服务器的8080端口开放)

当我们添加某个类或者修改某个些配置文件的时候,无需进行重新打包、上传服务器等这么麻烦的步骤了,我们只需将添加的class通过IDEA上传即可完成快速部署!
例如:我们新增一个类:TestController,只需要将对应的class提交至服务器即可完成部署!

将对应class提交至服务器!

至此,我们通过shell脚本运行java程序已经完成!
IDEA部署项目,并结合Shell脚本运行Java程序的更多相关文章
- shell脚本运行java程序jar
在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/b ...
- 在linux中部署项目并创建shell脚本
1.首先要在idea中父工程maven包下执行clean生成的target包 2.执行package打包,打包时候讲test勾去掉 3.将target包中生成的jar包cp出来 此处注意打包时必须要保 ...
- linux的shell脚本运行python程序
可以说和windows里的bat是一样的. python3 /opt/pyweibo/get_user_info.py 104501 104502 104503
- shell脚本启动java程序
#!/bin/bash ### 切换到工作目录 bin=$(cd `dirname ${0}`;pwd) cd ${bin} echo "bin [${bin}] .." ### ...
- 基于sparksql调用shell脚本运行SQL
[Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...
- 将shell脚本运行情况写入Rsyslog日志server
在运维工作中,免不了编写一些脚本交由计划任务(cron)去定时运行完毕一些日常工作,实现运维工作自己主动化.比方在我的日常工作中备份数据是一项重要的工作,须要定时将数据备份到备份服器和一些其它的备份介 ...
- linux使用shell脚本停止java进程
使用shell脚本停止java进程,过程就是先查出对应的java进程pid,然后kill掉 - | 其中xxx是对应进程的关键词(即从查出的所有java进程中分辨出目标进程)
- 在 Sublime Text 3 中配置编译和运行 Java 程序
参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...
- java的windows自动化-自动运行java程序
那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...
随机推荐
- matplotlib 画封闭图像并填充
1.画矩形 这个费了我半天劲,不知怎么就可以了. 复制来自:https://www.cnblogs.com/ymjyqsx/p/7390288.html import matplotlib.pypl ...
- SpringCloud Netflix Hystrix
Hystrix的一些概念 Hystrix是一个容错框架,可以有效停止服务依赖出故障造成的级联故障. 和eureka.ribbon.feign一样,也是Netflix家的开源框架,已被SpringClo ...
- js加密(二)文书获取
时间原因直接上代码,有空再解释. js代码: //var tm=new Array(1) //tm[0]=e; ////tm[1]="%u5e72%u82e5%u4f5c%u5de5%u88 ...
- Explainable ML
定义: 不仅可以(分类),还要输出分类的理由是什么(局部),以及某一个分类的判断标准(全局) 局部: silence map. 把{x1.....xn}中每一个像素加一个偏移量之后,得到的y偏移量与x ...
- PHP SDK+Oss 上传文件流
// Endpoint以杭州为例,其它Region请按实际情况填写. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 云 ...
- 转载:DRC
https://cn.mathworks.com/help/audio/ug/dynamic-range-control.html?requestedDomain=cn.mathworks.com h ...
- 画图软件gliffy
网上的资源真是海量丫: https://segmentfault.com/q/1010000000310976 gliffy软件在线网址:https://chrome.google.com/webst ...
- xml配置文件中对于Shiro 权限管理filterChainDefinitions过滤器配置
博客转载:http://blog.csdn.net/userrefister/article/details/47807075 /** * Shiro-1.2.2内置的FilterChain * @s ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
- ASP.NET Core 使用过滤器移除重复代码
USING ACTIONFILTERS TO REMOVE DUPLICATED CODE ASP.NET Core 的过滤器可以让我们在请求管道的特定状态之前或之后运行一些代码.因此如果我们的 ac ...