java 代码 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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值