Gehen Sie davon aus, dass die Verzeichnisstruktur die Maven-Standardstruktur ist
Kopieren Sie den Codecode wie folgt:
-src
-Ziel
-test.jar (das JAR-Paket, das Sie aktualisieren müssen)
Kopieren Sie den Codecode wie folgt:
Paket com.foo.common.base.utils.development;
import static org.junit.Assert.*;
java.io.File importieren;
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;
öffentliche Klasse JarUpdater {
public static final Logger logger = LoggerFactory
.getLogger(JarUpdater.class);
@Prüfen
/**
* Aktualisieren Sie alle Dateien im com-Verzeichnis auf die entsprechende Verzeichnisstruktur des JAR
*
* Bei einem erfolgreichen Code-Update behaupten wir, dass die Größe des Glases unterschiedlich ist
*/
public void updateClass() löst IOException, InterruptedException {
ClassPathResource myPath = new ClassPathResource(
"jarUpdaterConfig.properties");
Eigenschaften p = neue Eigenschaften();
p.load(myPath.getInputStream());
ClassUpdater classUpdater = new ClassUpdater().applySettings(p);
classUpdater.compileAndCopyClass();
StringworkingDirectory = p.getProperty("workingDirectory");
String jar4UpdateName = p.getProperty("jar4UpdateName");
// Klassenkompilierungspfad
String updateSourcePath =workingDirectory + „target“;
// Stammordner der Klasse
String updateSourceDir = "com";
Datum startDate = new Date();
File myJar = new File(workingDirectory + jar4UpdateName);
if (!myJar.isFile()) {
logger.error("Datei mit folgendem Pfad {} existiert nicht.",
jar4UpdateName);
zurückkehren;
}
long oldLength = myJar.length();
logger.info("Jetzt bereit zum Aktualisieren der JAR-Datei mit dem Namen:{},Größe:{}",
myJar.getName(), myJar.length());
String myCommand = „jar uf“ + WorkingDirectory + jar4UpdateName
+ " -C " + updateSourcePath + " " + updateSourceDir;
logger.info("Befehl aktualisieren【{}】", myCommand);
Runtime.getRuntime().exec(myCommand);
while (!FileUtils.isFileNewer(myJar, startDate)) {
logger.info("Zwei Sekunden lang schlafen, Änderungen prüfen...");
Thread.sleep(2000);
}
behauptenNotEquals(
„jar wurde möglicherweise nicht erfolgreich aktualisiert, überprüfen Sie bitte den Code“,
oldLength, myJar.length());
logger.info("Aktualisieren Sie nun die JAR-Datei mit der Größe:{}", myJar.length());
}
}