private void initialize(CliRequest cliRequest) { if (cliRequest.stdout == null) { cliRequest.stdout = System.out; } if (cliRequest.stderr == null) { cliRequest.stderr = System.err; } if (logger == null) { logger = new PrintStreamLogger(cliRequest.stdout); } else { logger.setStream(cliRequest.stdout); } if (cliRequest.workingDirectory == null) { cliRequest.workingDirectory = System.getProperty("user.dir"); } // // Make sure the Maven home directory is an absolute path to save us from confusion with say // drive-relative // Windows paths. // String mavenHome = System.getProperty("maven.home"); if (mavenHome != null) { System.setProperty("maven.home", new File(mavenHome).getAbsolutePath()); } }
// // Logging needs to be handled in a standard way at the container level. // private void logging(CliRequest cliRequest) { cliRequest.debug = cliRequest.commandLine.hasOption(CLIManager.DEBUG); cliRequest.quiet = !cliRequest.debug && cliRequest.commandLine.hasOption(CLIManager.QUIET); cliRequest.showErrors = cliRequest.debug || cliRequest.commandLine.hasOption(CLIManager.ERRORS); if (cliRequest.debug) { cliRequest.request.setLoggingLevel(MavenExecutionRequest.LOGGING_LEVEL_DEBUG); } else if (cliRequest.quiet) { // TODO: we need to do some more work here. Some plugins use sys out or log errors at info // level. // Ideally, we could use Warn across the board cliRequest.request.setLoggingLevel(MavenExecutionRequest.LOGGING_LEVEL_ERROR); // TODO:Additionally, we can't change the mojo level because the component key includes the // version and // it isn't known ahead of time. This seems worth changing. } else { cliRequest.request.setLoggingLevel(MavenExecutionRequest.LOGGING_LEVEL_INFO); } logger.setThreshold(cliRequest.request.getLoggingLevel()); if (cliRequest.commandLine.hasOption(CLIManager.LOG_FILE)) { File logFile = new File(cliRequest.commandLine.getOptionValue(CLIManager.LOG_FILE)); logFile = resolveFile(logFile, cliRequest.workingDirectory); try { cliRequest.fileStream = new PrintStream(logFile); logger.setStream(cliRequest.fileStream); } catch (FileNotFoundException e) { cliRequest.stderr.println(e); logger.setStream(cliRequest.stdout); } } else { logger.setStream(cliRequest.stdout); } cliRequest.request.setExecutionListener(new ExecutionEventLogger(logger)); }