Предположим, что структура каталогов является стандартной структурой maven.
Скопируйте код кода следующим образом:
-источник
-цель
-test.jar (пакет jar, который необходимо обновить)
Скопируйте код кода следующим образом:
пакет com.foo.common.base.utils.development;
импортировать статический org.junit.Assert.*;
импортировать java.io.File;
импортировать java.io.IOException;
импортировать java.util.Date;
импортировать java.util.Properties;
импортировать org.apache.commons.io.FileUtils;
импортировать org.junit.Test;
импортировать org.slf4j.Logger;
импортировать org.slf4j.LoggerFactory;
импортировать org.springframework.core.io.ClassPathResource;
общественный класс JarUpdater {
общедоступный статический окончательный Logger logger = LoggerFactory
.getLogger(JarUpdater.class);
@Тест
/**
* Обновите все файлы в каталоге com до соответствующей структуры каталогов jar.
*
* При успешном обновлении кода утверждаем, что размер jar другой
*/
public void updateClass() выдает IOException, InterruptedException {
ClassPathResource myPath = новый ClassPathResource(
"jarUpdaterConfig.properties");
Свойства p = новые свойства();
p.load(myPath.getInputStream());
ClassUpdater classUpdater = новый ClassUpdater().applySettings(p);
classUpdater.compileAndCopyClass();
StringworkDirectory = p.getProperty("workingDirectory");
String jar4UpdateName = p.getProperty("jar4UpdateName");
// путь компиляции класса
Строка updateSourcePath = рабочий каталог + «цель»;
// корневая папка класса
Строка updateSourceDir = «com»;
Дата startDate = новая дата();
Файл myJar = новый файл (workDirectory + jar4UpdateName);
если (!myJar.isFile()) {
logger.error("Файл по следующему пути {} не существует.",
jar4UpdateName);
возвращаться;
}
длинный oldLength = myJar.length();
logger.info("Теперь мы готовы обновить jar-файл с именем:{},размер:{}",
myJar.getName(), myJar.length());
String myCommand = "jar uf" + рабочий каталог + jar4UpdateName
+ " -C " + updateSourcePath + " " + updateSourceDir;
logger.info("Команда обновления【{}】", myCommand);
Runtime.getRuntime().exec(myCommand);
while (!FileUtils.isFileNewer(myJar, startDate)) {
logger.info("спать две секунды,проверяем изменения...");
Thread.sleep(2000);
}
утверждатьNotEquals(
«Jar может быть не обновлен успешно, проверьте код, пожалуйста»,
oldLength, myJar.length());
logger.info("Теперь завершите обновление jar-файла размером: {}", myJar.length());
}
}