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

好的,我只是用另一种方式解决这个问题。我使用 process=Runtime.getRuntime().exec("java -jar ant-launcher.jar -f build.xml") 来执行ant任务。但是记得启动两个线程来读取process.getInputStream()和process.getErrorStream()。

于 2012-10-15T12:15:40.147 回答