在eclipse中运行配置后如何获取控制台输出(在代码中)?

时间:2017-07-06 13:17:06

标签: eclipse eclipse-plugin

我需要根据执行首次启动配置的输出启动另一个启动配置。那么有一种方法可以从这次发布中获得控制台输出吗?

这样的事情:

 Launch launch = (Launch) configurations[0].launch(ILaunchManager.RUN_MODE, console);
 if(launch.output){
   configurations[1].launch(ILaunchManager.RUN_MODE, console);
 }

例如,首次启动配置是一个maven项目,我需要检查构建是成功还是失败。

我有以下代码:

Launch launch = (Launch) configurations[0].launch(ILaunchManager.RUN_MODE,
                            new NullProgressMonitor());
                    final IProcess[] processes = launch.getProcesses();
                    IDebugEventSetListener listener = new IDebugEventSetListener() {

                        @Override
                        public void handleDebugEvents(DebugEvent[] events) {
                            for(DebugEvent e : events){
                                for(int i = 0; i < processes.length; i++){
                                    if(e.getKind() == DebugEvent.TERMINATE && e.getSource() == processes[i]){
                                        try {
                                            --------To check here if console contains Build Failed--------
                                            configurations[1].launch(ILaunchManager.RUN_MODE,
                                                    new NullProgressMonitor());
                                        } catch (CoreException e1) {
                                            e1.printStackTrace();
                                        }
                                    }
                                }

                            }
                        }
                    };
                    DebugPlugin.getDefault().addDebugEventListener(listener);

1 个答案:

答案 0 :(得分:1)

您可以使用org.eclipse.ui.console.consolePatternMatchListeners扩展点来匹配控制台输出中的模式:

<extension
     point="org.eclipse.ui.console.consolePatternMatchListeners">
  <consolePatternMatchListener
        class="com.example.ExampleConsolePatternMatcher"
        id="com.example.ExampleConsolePatternMatcher"
        regex=".*foo.*">
     <enablement>
        <test property="org.eclipse.ui.console.consoleTypeTest" value="exampleConsole"/>
     </enablement>
  </consolePatternMatchListener>
</extension>

您可以使用org.eclipse.debug.ui.consoleLineTrackers扩展点来侦听给定流程类型的流程输出的行:

<extension
     point="org.eclipse.debug.ui.consoleLineTrackers">
  <consoleLineTracker
        class="org.eclipse.jdt.internal.ui.javadocexport.JavadocConsoleLineTracker"
        processType="org.eclipse.jdt.ui.javadocProcess"
        id="org.eclipse.jdt.ui.javadocexport.JavadocConsoleLineTracker">
  </consoleLineTracker>
</extension>