diff --git a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java index 67acbafac9ba..01e2794bc747 100644 --- a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java +++ b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java @@ -32,6 +32,8 @@ import org.apache.maven.building.FileSource; import org.apache.maven.building.Source; +import org.apache.maven.settings.Repository; +import org.apache.maven.settings.RepositoryPolicy; import org.apache.maven.settings.Settings; import org.apache.maven.settings.TrackableBase; import org.apache.maven.settings.io.SettingsParseException; @@ -97,6 +99,26 @@ public SettingsBuildingResult build(SettingsBuildingRequest request) throws Sett settingsMerger.merge(userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL); + // If no repository is defined in the user/global settings, + // it means that we have "old" settings (as those are new in 4.0) + // so add central to the computed settings for backward compatibility. + if (userSettings.getRepositories().isEmpty() + && userSettings.getPluginRepositories().isEmpty()) { + Repository central = new Repository(); + central.setId("central"); + central.setName("Central Repository"); + central.setUrl("https://repo.maven.apache.org/maven2"); + RepositoryPolicy disabledPolicy = new RepositoryPolicy(); + disabledPolicy.setEnabled(false); + central.setSnapshots(disabledPolicy); + userSettings.getRepositories().add(central); + central = central.clone(); + RepositoryPolicy updateNeverPolicy = new RepositoryPolicy(); + disabledPolicy.setUpdatePolicy("never"); + central.setReleases(updateNeverPolicy); + userSettings.getPluginRepositories().add(central); + } + problems.setSource(""); userSettings = interpolate(userSettings, request, problems);