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 ...
随机推荐
- vue基础实例
<html> <head> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"> ...
- AcWing 873. 欧拉函数
//用定义直接求 #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; while( ...
- [git] git合并冲突 本地已有项目上传 各种问题
git... 讲道理 我现在能隐约感觉到他的强大控制能力了 但是依旧是不习惯.... 无论是什么操作 在我这里都会出问题,,,, 上传本地已有的项目到码云 首先需要现在码云创建一个仓库 然后用git工 ...
- 2019牛客多校第一场E ABBA dp
ABBA dp 题意 给出2(N+M)个AB字符,问能构造出N个AB子序列和M个BA子序列组成的2*(n+m)的序列种类有多少 思路 碰到计数构造类的题目,首先要去找到判断合法性的条件,即什么情况下合 ...
- 959F - Mahmoud and Ehab and yet another xor task xor+dp(递推形)+离线
959F - Mahmoud and Ehab and yet another xor task xor+dp+离线 题意 给出 n个值和q个询问,询问l,x,表示前l个数字子序列的异或和为x的子序列 ...
- POJ 3177 Redundant Paths (tarjan边双连通分量)
题目连接:http://poj.org/problem?id=3177 题目大意是给定一些牧场,牧场和牧场之间可能存在道路相连,要求从一个牧场到另一个牧场要有至少两条以上不同的路径,且路径的每条pat ...
- 在mac上进行JAVA开发
一. JDK 的下载与安装 终端输入java看看有没有安装java: 见到此弹窗,说明没有安装呀! 点击oracle官网链接: http://www.oracle.com/technetwork/j ...
- 吴裕雄 python 机器学习——局部线性嵌入LLE降维模型
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...
- Springboot MongoTemplate
springboot mongodb配置解析 MongoTemplate进行增删改查 mongoTemplate 手把手教springboot访问/操作mongodb(查询.插入.删除) Spring ...
- 并发之CountDownLatch用法详解
概念 CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行.例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后执行. Co ...