我们项目是打包成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. 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  2. SSH 框架搭建与开发

    对于Java初学者而言,SSH框架还是比较复杂的,今天借用一个Web注册功能的案例给大家讲解下,主要是讲下开发模式与注意事项! 注册界面如下所示: 1.首先建库建表(我用的是Mysql数据库,大家可以 ...

  3. mysql root密码忘记最快方法

    在my.cnf [mysqld]栏添加 skip-grant-tables 然后重启/etc/init.d/mysqld restart mysql ##select password('新密码') ...

  4. 【AngularJS】【02】AngularJS应用骨架

    ※文件引自OneDrive,有些人可能看不到

  5. cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  6. -ROOT-表和.META.表结构详解

    在<HBase技术简介>中我们知道,HBase中有两个特殊的表:-ROOT-和.META.. 由于HBase中的表可能非常大,故HBase会将表按行分成多个region,然后分配到多台Re ...

  7. VueJS渐进式JS框架中文学习

    官方网站:http://vuejs.org/ GitHub:https://github.com/vuejs/vue 中文学习地址:https://cn.vuejs.org/

  8. CentOS 6.5语言包裁剪

    https://www.ibm.com/developerworks/cn/linux/l-cn-linuxglb/ 浅析 Linux 的国际化与本地化机制 Linux 是一个国际化的操作系统,它的工 ...

  9. asp.net core 系列之Reponse caching之cache in-memory (2)

    这篇文章(主要翻译于官网,水平有限,见谅)讲解asp.net core 中的 Cache in-memory (内存缓存). Cache in-memory in ASP.NET Core Cachi ...

  10. U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明

    都知道U-BOOT分为两个阶段,第一阶段是(~/cpu/arm920t/start.S中)在FLASH上运行(一般情况 下),完成对硬件的初始化,包括看门狗,中断缓存等,并且负责把代码搬移到SDRAM ...