ビルドプロセスを手伝ってくれるアプリをノックアップしていて、試してみたところ、git pull origin
コマンドが含まれています。私はあらゆる種類のメソッドを試してみましたが、そのコマンドで動作する入力や出力を得ることはできません。ProcessBuilderを使用してコマンドラインと入力が必要なコマンドを実行する
プログラムは、入力または出力なしで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();
}
}
が期待通りに出力を提供しますdir
でgit pull origin
を交換します。
他のgitコマンドを 'git status'として試してみると、出力が得られます。これは、gitコマンドがコンソールに正しく追加されているかどうかを知ることです。 –
@SergioLemaはい、 'git status'は期待どおりの出力を返します。 –
したがって、問題は資格情報に残っていると思います。あなたのアカウントを使用するようにgitを設定しようとしてください(user.nameとuser.emailを '.gitconfig'に入れてください) –