ant任务“sshexec”,如何在控制台中打印远程消息?

时间:2012-10-12 10:27:11

标签: eclipse ant eclipse-plugin console

我在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 ...; ....

它只打印我写的命令,但远程机器的编译消息无法在控制台中打印。一旦错误进入编译过程,它仍然成功返回构建 如何在控制台中打印远程消息并获取错误结果?

1 个答案:

答案 0 :(得分:0)

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