我正在开发一个应用程序来尝试帮助我的构建过程,并尝试包含 git pull origin
命令。我尝试并测试了各种方法,但似乎无法获得任何输入或输出来使用该命令。
程序等待 Process.waitFor()
没有输入或输出。
我假设git pull
命令正在等待我输入用户名和密码,但到目前为止我还没有确定如何实现这一点。
关于 SO 的问题有很多,涵盖了这些类型的示例,但似乎没有一个答案适合我的用例。
我认为应该有效的最简单的代码是:
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();
}
}
替换 git pull origin
与 dir
将提供预期的输出。
最佳答案
仅执行 git pull origin
而无需默认配置的凭据,git
将在任何重要操作中等待它们。在您的代码中,您不提供(也不查看)git
反馈,因此应用程序会陷入此阶段。
将 git
的默认凭据配置到 .gitconfig
文件中,任何 git
命令都将使用它们,并且控制台不会卡住(您的应用程序也不会卡住)。
关于java - 使用ProcessBuilder执行需要命令行输入的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421932/