2017-07-06 61 views
1

我需要根据执行第一次启动配置的输出启动另一个启动配置。所以有一种方法可以从这次启动获取控制台输出?如何在eclipse中运行配置后获得控制台输出(在代码中)?

事情是这样的:

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

可以使用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> 
+0

以及我应该如何将它与代码中的启动过程连接起来? –

+0

这些扩展点始终处于活动状态。您必须将有关启动的信息保存在可以访问的地方,以检查是否需要执行任何操作。 –

+0

我明白这一点,但在代码中,如何获取控制台输出以与某些字符串进行比较? –

相关问题