我需要根据执行首次启动配置的输出启动另一个启动配置。那么有一种方法可以从这次发布中获得控制台输出吗?
这样的事情:
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);
答案 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>