private void configureSettings(final MavenExecutionRequest request) throws Exception { assert request != null; assert config != null; File userSettingsFile = config.getSettingsFile(); if (userSettingsFile != null) { userSettingsFile = resolveFile(userSettingsFile, config.getBaseDirectory()); if (!userSettingsFile.isFile()) { throw new FileNotFoundException( "The specified user settings file does not exist: " + userSettingsFile); // TODO: i18n } } else { userSettingsFile = DEFAULT_USER_SETTINGS_FILE; } logger.debug("Reading user settings from: " + userSettingsFile); request.setUserSettingsFile(userSettingsFile); File globalSettingsFile = config.getGlobalSettingsFile(); if (globalSettingsFile != null) { globalSettingsFile = resolveFile(globalSettingsFile, config.getBaseDirectory()); if (!globalSettingsFile.isFile()) { throw new FileNotFoundException( "The specified global settings file does not exist: " + globalSettingsFile); // TODO: i18n } } else { globalSettingsFile = DEFAULT_GLOBAL_SETTINGS_FILE; } logger.debug("Reading global settings from: " + globalSettingsFile); request.setGlobalSettingsFile(globalSettingsFile); configureProperties(request); SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest() .setGlobalSettingsFile(globalSettingsFile) .setUserSettingsFile(userSettingsFile) .setSystemProperties(request.getSystemProperties()) .setUserProperties(request.getUserProperties()); SettingsBuildingResult settingsResult; SettingsBuilder settingsBuilder = container.lookup(SettingsBuilder.class); try { settingsResult = settingsBuilder.build(settingsRequest); } finally { container.release(settingsBuilder); } // NOTE: This will nuke some details from the request; profiles, online, etc... :-( MavenExecutionRequestPopulator populator = container.lookup(MavenExecutionRequestPopulator.class); try { populator.populateFromSettings(request, settingsResult.getEffectiveSettings()); } finally { container.release(populator); } if (!settingsResult.getProblems().isEmpty() && logger.isWarnEnabled()) { logger.warn(""); logger.warn( "Some problems were encountered while building the effective settings"); // TODO: i18n for (SettingsProblem problem : settingsResult.getProblems()) { logger.warn(problem.getMessage() + " @ " + problem.getLocation()); // TODO: i18n } logger.warn(""); } }