in impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java [595:717]
protected Runnable settings(C context, boolean emitSettingsWarnings, SettingsBuilder settingsBuilder)
throws Exception {
Options mavenOptions = context.invokerRequest.options();
Path userSettingsFile = null;
if (mavenOptions.altUserSettings().isPresent()) {
userSettingsFile =
context.cwd.resolve(mavenOptions.altUserSettings().get());
if (!Files.isRegularFile(userSettingsFile)) {
throw new FileNotFoundException("The specified user settings file does not exist: " + userSettingsFile);
}
} else {
String userSettingsFileStr =
context.protoSession.getUserProperties().get(Constants.MAVEN_USER_SETTINGS);
if (userSettingsFileStr != null) {
userSettingsFile =
context.userDirectory.resolve(userSettingsFileStr).normalize();
}
}
Path projectSettingsFile = null;
if (mavenOptions.altProjectSettings().isPresent()) {
projectSettingsFile =
context.cwd.resolve(mavenOptions.altProjectSettings().get());
if (!Files.isRegularFile(projectSettingsFile)) {
throw new FileNotFoundException(
"The specified project settings file does not exist: " + projectSettingsFile);
}
} else {
String projectSettingsFileStr =
context.protoSession.getUserProperties().get(Constants.MAVEN_PROJECT_SETTINGS);
if (projectSettingsFileStr != null) {
projectSettingsFile = context.cwd.resolve(projectSettingsFileStr);
}
}
Path installationSettingsFile = null;
if (mavenOptions.altInstallationSettings().isPresent()) {
installationSettingsFile =
context.cwd.resolve(mavenOptions.altInstallationSettings().get());
if (!Files.isRegularFile(installationSettingsFile)) {
throw new FileNotFoundException(
"The specified installation settings file does not exist: " + installationSettingsFile);
}
} else {
String installationSettingsFileStr =
context.protoSession.getUserProperties().get(Constants.MAVEN_INSTALLATION_SETTINGS);
if (installationSettingsFileStr != null) {
installationSettingsFile = context.installationDirectory
.resolve(installationSettingsFileStr)
.normalize();
}
}
context.installationSettingsPath = installationSettingsFile;
context.projectSettingsPath = projectSettingsFile;
context.userSettingsPath = userSettingsFile;
UnaryOperator<String> interpolationSource = Interpolator.chain(
context.protoSession.getUserProperties()::get, context.protoSession.getSystemProperties()::get);
SettingsBuilderRequest settingsRequest = SettingsBuilderRequest.builder()
.session(context.protoSession)
.installationSettingsSource(
installationSettingsFile != null && Files.exists(installationSettingsFile)
? Sources.fromPath(installationSettingsFile)
: null)
.projectSettingsSource(
projectSettingsFile != null && Files.exists(projectSettingsFile)
? Sources.fromPath(projectSettingsFile)
: null)
.userSettingsSource(
userSettingsFile != null && Files.exists(userSettingsFile)
? Sources.fromPath(userSettingsFile)
: null)
.interpolationSource(interpolationSource)
.build();
customizeSettingsRequest(context, settingsRequest);
if (context.eventSpyDispatcher != null) {
context.eventSpyDispatcher.onEvent(settingsRequest);
}
context.logger.debug("Reading installation settings from '" + installationSettingsFile + "'");
context.logger.debug("Reading project settings from '" + projectSettingsFile + "'");
context.logger.debug("Reading user settings from '" + userSettingsFile + "'");
SettingsBuilderResult settingsResult = settingsBuilder.build(settingsRequest);
customizeSettingsResult(context, settingsResult);
if (context.eventSpyDispatcher != null) {
context.eventSpyDispatcher.onEvent(settingsResult);
}
context.effectiveSettings = settingsResult.getEffectiveSettings();
context.interactive = mayDisableInteractiveMode(context, context.effectiveSettings.isInteractiveMode());
context.localRepositoryPath = localRepositoryPath(context);
if (emitSettingsWarnings && settingsResult.getProblems().hasWarningProblems()) {
int totalProblems = settingsResult.getProblems().totalProblemsReported();
context.logger.info("");
context.logger.info(String.format(
"%s %s encountered while building the effective settings (use -e to see details)",
totalProblems, (totalProblems == 1) ? "problem was" : "problems were"));
if (context.invokerRequest.options().showErrors().orElse(false)) {
for (BuilderProblem problem :
settingsResult.getProblems().problems().toList()) {
context.logger.warn(problem.getMessage() + " @ " + problem.getLocation());
}
}
context.logger.info("");
}
return () -> {
context.installationSettingsPath = null;
context.projectSettingsPath = null;
context.userSettingsPath = null;
context.effectiveSettings = null;
context.interactive = true;
context.localRepositoryPath = null;
};
}