当前位置:  编程技术>java/j2ee

用代码更新你的jar包

    来源: 互联网  发布时间:2014-11-01

    本文导语:  假设目录结构是maven标准结构 代码如下:-src-target-test.jar(你需要更新的jar包) 代码如下:package com.foo.common.base.utils.development; import static org.junit.Assert.*; import java.io.File;import java.io.IOException;import java.util.Date;import java.util.Properties; impor...

假设目录结构是maven标准结构

代码如下:

-src
-target
-test.jar(你需要更新的jar包)

代码如下:

package com.foo.common.base.utils.development;

import static org.junit.Assert.*;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;

public class JarUpdater {
 public static final Logger logger = LoggerFactory
   .getLogger(JarUpdater.class);

 @Test
 /**
  * 更新com目录下的所有文件到jar的对应目录结构中去
  *
  * 一次成功的代码更新,我们断言jar的大小是不一样的
  */
 public void updateClass() throws IOException, InterruptedException {

  ClassPathResource myPath = new ClassPathResource(
    "jarUpdaterConfig.properties");
  Properties p = new Properties();
  p.load(myPath.getInputStream());

  ClassUpdater classUpdater = new ClassUpdater().applySettings(p);

  classUpdater.compileAndCopyClass();

  String workingDirectory = p.getProperty("workingDirectory");
  String jar4UpdateName = p.getProperty("jar4UpdateName");
  // class compile path
  String updateSourcePath = workingDirectory + "target";
  // class root folder
  String updateSourceDir = "com";

  Date startDate = new Date();

  File myJar = new File(workingDirectory + jar4UpdateName);
  if (!myJar.isFile()) {
   logger.error("file with following path {} does not exist.",
     jar4UpdateName);
   return;
  }
  long oldLength = myJar.length();
  logger.info("Now ready to update jar file with name:{},size:{}",
    myJar.getName(), myJar.length());
  String myCommand = "jar uf " + workingDirectory + jar4UpdateName
    + " -C " + updateSourcePath + " " + updateSourceDir;
  logger.info("Update command【{}】", myCommand);

  Runtime.getRuntime().exec(myCommand);

  while (!FileUtils.isFileNewer(myJar, startDate)) {
   logger.info("sleep for two seconds,checking changes...");
   Thread.sleep(2000);
  }
  assertNotEquals(
    "jar may not be updated successfully,check the code please",
    oldLength, myJar.length());
  logger.info("Now finish update jar file with size:{}", myJar.length());
 }
}


    
 
 

您可能感兴趣的文章:

  • 推荐代码:c# 异步更新UI 不阻塞 流畅
  • jsp显示server数据库的内容,如何实现定时更新,给一段代码例子吧,谢谢
  • 改动源代码之后,如何更新系统?
  • SQL 级联删除 级联更新的代码
  • 经典sql代码--逐行计算、逐行递延、逐行更新
  • sql2005字符段分段更新的代码
  • git更新部分代码的指令
  • PHP批量更新数据库的示例代码
  • MySQL 随机查询数据与随机更新数据实现代码
  • php更新修改excel中的内容实例代码
  • PHP强制更新图片缓存的示例代码
  • C# 多线程更新进度条progressBar控件的代码一例
  • sql server批量插入与更新的实现代码
  • PHP运行SVN命令显示某用户的文件更新记录的代码
  • PHP定时更新程序实现代码
  • sql server本地查询更新操作远程数据库的代码
  • SQLSERVER 本地查询更新操作远程数据库的代码
  • asp.net实例代码之更新访问数据
  • java操作mysql入门代码实例(含插入、更新和查询)
  • jsp Hibernate批量更新和批量删除处理代码
  • 怎样看到.jar文件的源代码
  • 各们兄弟姐妹JAVA的分发是否只用一个JAR包?还需发安装JDK吗?CLASS可被反编译,那代码不是没有安全性了吗?
  • c# 解压缩文件(.jar与.zip)的代码
  • 通过jxl.jar 读取、导出excel的实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • javascript 添加到收藏夹和书签代码示例
  • 在JBuilder中,为什么编写的代码中,当代码出现关键字时,后面的部分代码就移位了,当在有关键字的那些代码行进行选择时,也会出现鼠标位
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 为什么两行代码间不加入其他代码就崩溃,而加入了日志代码后就不崩溃?
  • JSP中清空cookie代码参考
  • 在ubuntu8.10 新立得中安装anjuta,为什么没有代码提示功能,怎么做才有,还有自动代码补全和代码提示有什么区别,
  • Python获取网页编码的方法及示例代码
  • 到底怎么样的代码算是有效代码?请教了。。
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 如果要研究源代码以提高自己,哪一个开放源代码的软件比较合适?
  • php通过socket_bind()设置IP地址代码示例
  • linux源代码的时间函数源代码
  • boost库lexical_cast不同用法代码参考
  • gdb的时候代码 next显示的代码乱了
  • 通过javascript库JQuery实现页面跳转功能代码
  • 源代码!源代码!
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • HTML网页的Meta Refresh自动跳转方法介绍及Meta Refresh自动跳转代码示例
  • 如何得到C语言代码对应的汇编代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • RedHat Linux是开放源代码的吗?如何能看见它的源代码,如何进行修改?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3