Ich habe eine App angestoßen, um zu versuchen, mit meinem Build-Prozess zu helfen und versuchte in einem git pull origin
Befehl enthalten. Ich habe alle Arten von Methoden ausprobiert und getestet, aber es scheint nicht möglich zu sein, irgendeine Eingabe oder Ausgabe zu erhalten, um mit diesem Befehl zu arbeiten.Verwenden von ProcessBuilder zum Ausführen von Befehlen, die comand Line-Eingabe erfordern
Das Programm wartet auf Process.waitFor()
ohne Eingabe oder Ausgabe.
Ich gehe davon aus, dass der git pull
Befehl auf mich wartet, um einen Benutzernamen und ein Kennwort einzugeben, aber bis jetzt habe ich nicht festgestellt, wie man das erreicht.
Es gibt zahlreiche Fragen zu SO-Verkleidungen, diese Art von Beispielen, aber keine der Antworten scheint für meinen Anwendungsfall zu funktionieren.
Der einfachste Code, den ich glaube, sollte funktionieren ist:
class CmdTest {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "git pull origin");
pb.redirectErrorStream(true);
pb.redirectInput(ProcessBuilder.Redirect.INHERIT);
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Process process = pb.start();
process.waitFor();
}
}
die git pull origin
mit einem dir
Ersetzen ausgegeben liefern wie erwartet.
Wenn Sie einen anderen Git-Befehl als 'git status' versuchen, erhalten Sie eine Ausgabe. Es ist zu wissen, ob der Befehl git korrekt zur Konsole hinzugefügt wurde. –
@SergioLema Ja, 'git status' gibt die Ausgabe wie erwartet zurück. –
Also, ich denke, das Problem bleibt in den Anmeldeinformationen. Versuchen Sie git so zu konfigurieren, dass Sie Ihr Konto verwenden (user.name und user.email in '.gitconfig') –