一、概述

  在实际开发中,我们写好的代码,往往打成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. redis 的安装和使用

    一.套用别人的话: redis 很牛叉,能将不同类型的数据存到内存,存到内存取出的时候就快了.所以,他很受欢迎.还有一个很牛叉的叫memcache ,但是他存的数据类型很有限,只能存入string 类 ...

  2. 【NOIP2012普及组】质因数分解

    P1075 质因数分解 假期第一天就给一道入门难度的题写题解…… 这道题一开始就被我想复杂了:埃式筛,欧拉筛……然而开一个1e9的数组?不现实. 直到看到题解区的dalao用唯一分解定理: 算术基本定 ...

  3. NEON的vsub方法溢出

    关于NEON的vsub方法的溢出,结果如下: vsub会产生溢出,根据数据bit表示规律,可知溢出结果和理论正确结果形成互补,比如249-(-7)=256 使用类vreinterpretq_s16_u ...

  4. Python - isinstance()更深刻的理解

    起因经过 今天翻collections.abc的文档时,我知道list的实例在逻辑上(因为duck typing 鸭子类型)是Container和不能hash的(因为list可变),就试下面的代码是否 ...

  5. Linux下run文件的直接运行

    比如realplay.run 安装方法如下 chmod +x realplay.run ./realplay.run 然后他就会执行安装了,在过程中可能会要求你输入yes或no 安装完后就可以用了 , ...

  6. spring(三):DefaultListableBeanFactory

  7. android 使用系统级别权限

    java.lang.SecurityException: Neither user 10027 nor current process has android.permission.MODIFY_PH ...

  8. Java实现Word/Pdf/TXT转html

    引言: 最近公司在做一个教育培训学习及在线考试的项目,本人主要从事网络课程模块,主要做课程分类,课程,课件的创建及在线学习和统计的功能,因为课件涉及到多种类型,像视频,音频,图文,外部链接及文档类型. ...

  9. 【红黑树】的详细实现(C++)

    红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树.红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键 ...

  10. CentOS7服务器状态下安装xampp

    遇到的问题 1.远程不能访问phpmyadmin,只能在本地访问,但是本地为命令行模式. 需要修改一下服务器端的配置,我们找到 /opt/lampp/etc/extra/httpd-xampp.con ...