我们项目是打包成war部署在jboss中的,但在上线或者运行时,经常要修改某些类然后再增量更新到war(因为生产环境只有发布的同时有,不能每个人都打包),所以都是手动做的,耗时耗力。

我花了点时间写了一个可以增量更新war包的类的shell 脚本,重点如下,脚本在附件,欢迎指正

1. war以及war/WEB-INF/lib中相关jar的解压。

先unzip war包,然后在使用find命令在war包下找到指定的相关jar包,也是使用unzip解压。

2. 增量的文件(class)的路径计算。

使用 javap命令进行反编译,在截取其中的包信息,比如计算Test.class的全限定路径,命令如下:

${JAVA_HOME}/bin/javap Test | grep ' class ' |awk -F ' ' '{if($3=="class"){print $4}else{print $3}}'
3. 匹配及更新

就是用第2步计算的信息使用find在第1步解压的文件夹下查找以及匹配,成功后则覆盖。

4.重新打包。先重新打包jar, 更新war/lib下相应的jar后,在打包war

$JAVA_HOME/bin/jar cf ${jarfolder}.jar -C $jarfolder/ .
$JAVA_HOME/bin/jar cf ${WAR_NAME}.war -C ${WAR_NAME}/ .

完整的脚本见附件,稍微修改一下对WEB-INF/lib/*.jar下的查找策略(JAR_SCOPE变量)就能运行~

http://files.cnblogs.com/files/surprizeFuture/autoUpdataWar.sh

自动增量更新war包的shell脚本的更多相关文章

  1. maven intall在target文件夹中自动生成的war包部署服务器时缺斤少两

    1.问题描述,本地改动特别大或者升级系统操作,打war包部署服务器上程序时候,页面或者后台总是报错,原因就是比本地少东西. 2.问题排查解决:maven clean然后maven intall在tar ...

  2. 可以自动安装mysql数据库的一个shell脚本

    发布:thatboy   来源:脚本学堂     [大 中 小] 分享一例shell脚本,可以实现mysql数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...

  3. linux服务器部署jar包以及shell脚本的书写

    背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中 ...

  4. 一个简单的Linux启动jar包的shell脚本

    背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...

  5. tomcat war包自动化部署脚本

    #/bin/bash #带发布build的war包名称 war_name="weiFeng.war" war_dir="/home/deploy/wei_feng_tar ...

  6. Linux系统防CC攻击自动拉黑IP增强版Shell脚本 《Linux系统防CC攻击自动拉黑IP增强版Shell脚本》来自张戈博客

    前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个 ...

  7. 自动监控主从MySQL同步的SHELL脚本

    代码如下: #!/bin/bash #check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LI ...

  8. linux启停jar包的shell脚本

    start.sh  启动脚本 #!/bin/bashcd /home/hygwnohup java -jar hy-web.jar >> /home/hygw/logs/server.lo ...

  9. Jenkins实现自动打包,MAVEN打包,Shell脚本启动

    1.点击New任务 2.创建任务,输入项目名 3.输入描述等 4.选择Git或SVN 5.自动,定时打包 6.在Build下配置

随机推荐

  1. OpenCV生成点集的Delaunay剖分和Voronoi图

    实现内容: 设置一副图像大小为600*600.图像像素值全为0,为黑色. 在图像中Rect(100,100,400,400)的区域随机产生20个点.并画出. 产生这些点集的Delaunay剖分和Vor ...

  2. HTML5 Support In Visual Studio 2010

    最近HTML5浪潮已经开始了,VS2010已经有一个扩展支持在HTML5智能提示.你可以从这里下载这个扩展: http://visualstudiogallery.msdn.microsoft.com ...

  3. 使用Docker开发NodeJs APP

    英文版原文地址 这是两篇连载文章的第一篇,讲解了如何使用 Docker 替代 Vagrant 开发基于 Express 框架的NodeJs App的部分细节.不过,这次要增加点难度:我们要使用 con ...

  4. mybatis的拦截器及分页机制

    https://blog.csdn.net/ssuperlg/article/details/79847889

  5. redis客户端连接,最大连接数查询与设置

    ##redis客户端连接数 redis通过监听一个TCP端口或socket的方式接收来自客户端的连接, 当与客户端建立连接后,redis内部会进行如下操作:()客户端socket会被设置为非阻塞模式, ...

  6. linux crontab 定时任务解析

    -----------crontab定时任务---------------------- 检查crontab工具是否安装 crontab -l 检查crontab服务是否启动 service cron ...

  7. swift基础教程笔记

    http://www.imooc.com/learn/127 <玩儿转swift> 慕课网教程笔记,自己根据2.1的语法做了更新. I. 1.通过playground来学习.熟悉swift ...

  8. 转载 -- 基于原生JS与OC方法互相调用并传值(附HTML代码)

    最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点就是方法的互相调用而已. 本文叙述下如何进行原生的JavaScript交互 本 ...

  9. Android 红色小圆球提示气泡 BadgeView

    今天给大家分享两个实用有简单的一个小圆球提示气泡: BadgeView 参考地址: https://github.com/qstumn/BadgeView;       个人地址:http://git ...

  10. TCP的四种定时器简单记录

    TCP管理的4个不同的定时器: 1.重传定时器:用于当希望收到另一端的确认. 2.坚持定时器:使窗口大小信息保持不断流动. 3.保活定时器:检测TCP空闲连接的另一端何时崩溃或重启. 4.2MSL定时 ...