我在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 ...; ....
它只打印我写的命令,但远程机器的编译消息无法在控制台中打印。一旦错误进入编译过程,它仍然成功返回构建 如何在控制台中打印远程消息并获取错误结果?
答案 0 :(得分:0)
好的,我只是用另一种方式解决了这个问题。 我使用process = Runtime.getRuntime()。exec(“java -jar ant-launcher.jar -f build.xml”)来执行ant任务。但请记住启动两个线程来读取process.getInputStream()和process.getErrorStream()。