Example #1
0
    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("");
      }
    }