public void update(Settings settings, File settingsFile) throws ManipulationException { try { Settings defaultSettings = new Settings(); if (settingsFile.exists()) { DefaultSettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); settingsRequest.setGlobalSettingsFile(settingsFile); defaultSettings = settingsBuilder.build(settingsRequest).getEffectiveSettings(); } for (Profile profile : settings.getProfiles()) { Iterator<Profile> i = defaultSettings.getProfiles().iterator(); while (i.hasNext()) { if (i.next().getId().equals(profile.getId())) { i.remove(); } } defaultSettings.addProfile(profile); } for (String activeProfile : settings.getActiveProfiles()) { Iterator<String> i = defaultSettings.getActiveProfiles().iterator(); while (i.hasNext()) { if (i.next().equals(activeProfile)) { i.remove(); } } defaultSettings.addActiveProfile(activeProfile); } for (Mirror mirror : settings.getMirrors()) { defaultSettings.addMirror(mirror); } for (Proxy proxy : settings.getProxies()) { defaultSettings.addProxy(proxy); } for (Server server : settings.getServers()) { defaultSettings.addServer(server); } for (String pluginGroup : settings.getPluginGroups()) { defaultSettings.addPluginGroup(pluginGroup); } if (settings.getLocalRepository() != null) { defaultSettings.setLocalRepository(settings.getLocalRepository()); } write(defaultSettings, settingsFile); } catch (SettingsBuildingException e) { throw new ManipulationException( "Failed to build existing settings.xml for repo removal backup.", e, settingsFile, e.getMessage()); } }