in daemon-m40/src/main/java/org/apache/maven/cli/DaemonMavenCli.java [1085:1161]
private void populateRequest(
CliRequest cliRequest,
MavenExecutionRequest request,
EventSpyDispatcher eventSpyDispatcher,
ModelProcessor modelProcessor,
TransferListener transferListener,
BuildEventListener buildEventListener,
LoggingExecutionListener executionListener) {
CommandLine commandLine = cliRequest.commandLine;
String workingDirectory = cliRequest.workingDirectory;
boolean quiet = cliRequest.quiet;
boolean verbose = cliRequest.verbose;
request.setShowErrors(cliRequest.showErrors); // default: false
File baseDirectory = new File(workingDirectory, "").getAbsoluteFile();
disableInteractiveModeIfNeeded(cliRequest, request);
enableOnPresentOption(commandLine, CLIManager.SUPPRESS_SNAPSHOT_UPDATES, request::setNoSnapshotUpdates);
request.setGoals(commandLine.getArgList());
request.setReactorFailureBehavior(determineReactorFailureBehaviour(commandLine));
disableOnPresentOption(commandLine, CLIManager.NON_RECURSIVE, request::setRecursive);
enableOnPresentOption(commandLine, CLIManager.OFFLINE, request::setOffline);
enableOnPresentOption(commandLine, CLIManager.UPDATE_SNAPSHOTS, request::setUpdateSnapshots);
request.setGlobalChecksumPolicy(determineGlobalCheckPolicy(commandLine));
request.setBaseDirectory(baseDirectory);
request.setSystemProperties(cliRequest.systemProperties);
request.setUserProperties(cliRequest.userProperties);
request.setMultiModuleProjectDirectory(cliRequest.multiModuleProjectDirectory);
request.setRootDirectory(cliRequest.rootDirectory);
request.setTopDirectory(cliRequest.topDirectory);
request.setPom(determinePom(modelProcessor, commandLine, workingDirectory, baseDirectory));
request.setTransferListener(transferListener);
request.setExecutionListener(executionListener);
ExecutionEventLogger executionEventLogger = new ExecutionEventLogger(messageBuilderFactory);
executionListener.init(eventSpyDispatcher.chainListener(executionEventLogger), buildEventListener);
if ((request.getPom() != null) && (request.getPom().getParentFile() != null)) {
request.setBaseDirectory(request.getPom().getParentFile());
}
request.setResumeFrom(commandLine.getOptionValue(CLIManager.RESUME_FROM));
enableOnPresentOption(commandLine, CLIManager.RESUME, request::setResume);
request.setMakeBehavior(determineMakeBehavior(commandLine));
request.setCacheNotFound(true);
request.setCacheTransferError(false);
performProjectActivation(commandLine, request.getProjectActivation());
performProfileActivation(commandLine, request.getProfileActivation());
final String localRepositoryPath = determineLocalRepositoryPath(request);
if (localRepositoryPath != null) {
request.setLocalRepositoryPath(localRepositoryPath);
}
//
// Builder, concurrency and parallelism
//
// We preserve the existing methods for builder selection which is to look for various inputs in the threading
// configuration. We don't have an easy way to allow a pluggable builder to provide its own configuration
// parameters but this is sufficient for now. Ultimately we want components like Builders to provide a way to
// extend the command line to accept its own configuration parameters.
//
final String threadConfiguration = commandLine.getOptionValue(CLIManager.THREADS);
if (threadConfiguration != null) {
int degreeOfConcurrency = calculateDegreeOfConcurrency(threadConfiguration);
if (degreeOfConcurrency > 1) {
request.setBuilderId("multithreaded");
request.setDegreeOfConcurrency(degreeOfConcurrency);
}
}
//
// Allow the builder to be overridden by the user if requested. The builders are now pluggable.
//
request.setBuilderId(commandLine.getOptionValue(CLIManager.BUILDER, request.getBuilderId()));
}