use of org.jenkins.tools.test.logging.SystemIOLoggerFilter in project plugin-compat-tester by jenkinsci.
the class InternalMavenRunner method run.
@Override
public void run(Config config, File baseDirectory, File buildLogFile, String... goals) throws PomExecutionException {
try {
init(config);
} catch (Exception x) {
throw new PomExecutionException(x);
}
final List<String> succeededPlugins = new ArrayList<String>();
try {
MavenRequest mavenRequest = buildMavenRequest(config, baseDirectory.getAbsolutePath(), config.userSettingsFile == null ? null : config.userSettingsFile.getAbsolutePath());
mavenRequest.setGoals(Arrays.asList(goals));
mavenRequest.setPom(new File(baseDirectory, "pom.xml").getAbsolutePath());
AbstractExecutionListener mavenListener = new AbstractExecutionListener() {
@Override
public void mojoSucceeded(ExecutionEvent event) {
succeededPlugins.add(event.getMojoExecution().getArtifactId());
}
};
mavenRequest.setExecutionListener(mavenListener);
mavenRequest.setLoggingLevel(Logger.LEVEL_INFO);
final PrintStream originalOut = System.out;
final PrintStream originalErr = System.err;
SystemIOLoggerFilter loggerFilter = new SystemIOLoggerFilter(buildLogFile);
// Since here, we are replacing System.out & System.err by
// wrappers logging things in the build log file
// We can't do this by using maven embedder's logger (or plexus logger)
// since :
// - It would imply to Instantiate a new MavenEmbedder for every test (which have a performance/memory cost !)
// - Plus it looks like there are lots of System.out/err.println() in maven
// plugin (instead of using maven logger)
System.setOut(new SystemIOLoggerFilter.SystemIOWrapper(loggerFilter, originalOut));
System.setErr(new SystemIOLoggerFilter.SystemIOWrapper(loggerFilter, originalErr));
try {
executeGoals(embedder, mavenRequest);
} catch (PomExecutionException x) {
PomExecutionException x2 = new PomExecutionException(x);
x2.succeededPluginArtifactIds.addAll(succeededPlugins);
throw x2;
} finally {
// Setting back System.out/err
System.setOut(originalOut);
System.setErr(originalErr);
}
} catch (IOException x) {
throw new PomExecutionException(x);
}
}
Aggregations