一、概述

  在实际开发中,我们写好的代码,往往打成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程序的更多相关文章

  1. shell脚本运行java程序jar

    在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/b ...

  2. 在linux中部署项目并创建shell脚本

    1.首先要在idea中父工程maven包下执行clean生成的target包 2.执行package打包,打包时候讲test勾去掉 3.将target包中生成的jar包cp出来 此处注意打包时必须要保 ...

  3. linux的shell脚本运行python程序

    可以说和windows里的bat是一样的. python3 /opt/pyweibo/get_user_info.py 104501 104502 104503

  4. shell脚本启动java程序

    #!/bin/bash ### 切换到工作目录 bin=$(cd `dirname ${0}`;pwd) cd ${bin} echo "bin [${bin}] .." ### ...

  5. 基于sparksql调用shell脚本运行SQL

    [Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...

  6. 将shell脚本运行情况写入Rsyslog日志server

    在运维工作中,免不了编写一些脚本交由计划任务(cron)去定时运行完毕一些日常工作,实现运维工作自己主动化.比方在我的日常工作中备份数据是一项重要的工作,须要定时将数据备份到备份服器和一些其它的备份介 ...

  7. linux使用shell脚本停止java进程

    使用shell脚本停止java进程,过程就是先查出对应的java进程pid,然后kill掉 - | 其中xxx是对应进程的关键词(即从查出的所有java进程中分辨出目标进程)

  8. 在 Sublime Text 3 中配置编译和运行 Java 程序

    参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...

  9. java的windows自动化-自动运行java程序

    那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...

随机推荐

  1. 计算a除b的第一位小数 in C++.

    my codes: #include<iostream> #include<cstdio> using namespace std; int main() { int a,b; ...

  2. Oracle的物理结构的三种文件

    .dbf数据文件,是用于存储数据库数据的文件,例如表中的记录,索引,数据字典信息等,可以通过系统数据字典DBA_DATA_FILES查看相关信息.与逻辑角度的表空间(并不是真正的文件)对应,一个表空间 ...

  3. mysql数据库事务的操作与理解

    --------------------事务----------------------------------------------查询mysql事务隔离级别1.查看当前会话隔离级别select ...

  4. AcWing 896. 最长上升子序列 II

    #include<iostream> #include<algorithm> #include<vector> using namespace std; int m ...

  5. 转载:声音分贝的概念,dBSPL.dBFS

    转自:https://www.cnblogs.com/wangguchangqing/p/5947659.html 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic unit) ...

  6. Flask 教程 第十九章:Docker容器上的部署

    本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...

  7. 浅谈对Jquery+JSON+WebService的使用小结

    https://www.jb51.net/article/36207.htm  更新时间:2013年04月28日 12:19:55   作者:    我要评论   本篇文章介绍了对Jquery+JSO ...

  8. opencv:自适应阈值

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  9. [爬坑记录] Qt 代码卡住 不发信号 不触发槽

    先让我激动一会儿 [捂脸] 最近在用Qt做个程序 用来参加比赛 期间总共遇到两次如标题的问题 也即是 莫名其妙的不触发槽函数了 而且原因也不一样 {先说明 我学习Qt依旧只是入门级 也许入不了大佬法眼 ...

  10. 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...