Asumsikan bahwa struktur direktori adalah struktur standar pakar
Copy kode kodenya sebagai berikut:
-src
-target
-test.jar (paket jar yang perlu Anda perbarui)
Copy kode kodenya sebagai berikut:
paket com.foo.common.base.utils.development;
import static org.junit.Assert.*;
impor java.io.File;
impor java.io.IOException;
import java.util.Date;
impor java.util.Properti;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
kelas publik JarUpdater {
logger logger final statis publik = LoggerFactory
.getLogger(JarUpdater.kelas);
@Tes
/**
* Perbarui semua file di direktori com ke struktur direktori jar yang sesuai
*
* Pembaruan kode berhasil, kami menegaskan bahwa ukuran toples berbeda
*/
public void updateClass() melempar IOException, InterruptedException {
ClassPathResource myPath = ClassPathResource baru(
"jarUpdaterConfig.properties");
Properti p = Properti baru();
p.load(myPath.getInputStream());
ClassUpdater classUpdater = new ClassUpdater().applySettings(p);
classUpdater.compileAndCopyClass();
String workingDirectory = p.getProperty("workingDirectory");
String jar4UpdateName = p.getProperty("jar4UpdateName");
// jalur kompilasi kelas
String updateSourcePath = direktori kerja + "target";
// folder akar kelas
String updateSourceDir = "com";
Tanggal mulaiTanggal = Tanggal baru();
File myJar = File baru (workingDirectory + jar4UpdateName);
jika (!myJar.isFile()) {
logger.error("file dengan jalur berikut {} tidak ada.",
jar4UpdateName);
kembali;
}
panjang oldLength = myJar.length();
logger.info("Sekarang siap mengupdate file jar dengan nama:{},ukuran:{}",
myJar.getName(), myJar.length());
String myCommand = "jar uf " + direktori kerja + jar4UpdateName
+ " -C " + perbaruiSourcePath + " " + perbaruiSourceDir;
logger.info("Perintah pembaruan 【{}】", myCommand);
Runtime.getRuntime().exec(perintah saya);
while (!FileUtils.isFileNewer(myJar, startDate)) {
logger.info("tidur selama dua detik, memeriksa perubahan...");
Thread.tidur(2000);
}
menegaskanTidakSama(
"jar mungkin tidak berhasil diperbarui, harap periksa kodenya",
oldLength, myJar.length());
logger.info("Sekarang selesaikan pembaruan file jar dengan ukuran:{}", myJar.length());
}
}