源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

用代码更新你的jar包

  • 时间:2021-06-26 10:05 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用代码更新你的jar包
假设目录结构是maven标准结构
[u]复制代码[/u] 代码如下:
-src -target -test.jar(你需要更新的jar包)
[u]复制代码[/u] 代码如下:
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());  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部