2

eclipse でプラグインを開発しました。このプラグインは ant task を呼び出す必要がありますsshexec。問題は、Eclipse コンソールにリモート メッセージを出力するにはどうすればよいかということです。

私のコードは以下のようなものです:

 Project p = new Project(); 

 MessageConsole console = new MessageConsole("building", null); 
 IConsoleManager manager = (IConsoleManager) ConsolePlugin.getDefault().getConsoleManager(); 
 manager.addConsoles(new IConsole[] { console }); 
 manager.showConsoleView(console); 

 MessageConsoleStream cs = console.newMessageStream(); 
 cs.setColor(Display.getDefault().getSystemColor(SWT.COLOR_BLUE)); 
 PrintStream ps = new PrintStream(cs); 

 final DefaultLogger consoleLogger = new DefaultLogger(); 
 consoleLogger.setErrorPrintStream(ps); 
 consoleLogger.setOutputPrintStream(ps); 
 consoleLogger.setMessageOutputLevel(Project.MSG_INFO); 

 p.init(); 
 p.addBuildListener(consoleLogger); 
 ProjectHelper helper = ProjectHelper.getProjectHelper(); 
 helper.parse(p, buildFile); 

 p.executeTarget(p.getDefaultTarget()); 

sshexec ターゲットを実行してコンパイルすると、常に次のような出力メッセージが表示されます

[sshexec] cd ...; ls ...; ....

私が書いたコマンドのみを出力しますが、リモートマシンのコンパイルメッセージはコンソールに出力できません。そして、コンパイル手順でエラーが発生すると、ビルドが正常に返されました。
コンソールにリモート メッセージを出力し、エラー結果を取得するにはどうすればよいですか?

4

1 に答える 1

0

OK、別の方法でこの問題を解決します。process=Runtime.getRuntime().exec("java -jar ant-launcher.jar -f build.xml") を使用して、ant タスクを実行しました。ただし、2 つのスレッドを開始して、process.getInputStream() と process.getErrorStream() を読み取ることを忘れないでください。

于 2012-10-15T12:15:40.147 に答える