diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/MavenProjectFacade.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/MavenProjectFacade.java index b04b0d6e35..de50355ddf 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/MavenProjectFacade.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/MavenProjectFacade.java @@ -664,6 +664,10 @@ private static final class MavenProjectConfiguration implements IProjectConfigur private List inactiveProfiles; + private String globalSettingsFile; + + private String userSettingsFile; + private MavenProjectConfiguration(IProjectConfiguration baseConfiguration) { if(baseConfiguration == null) { //we should really forbid this but some test seem to pass null! @@ -677,6 +681,8 @@ private MavenProjectConfiguration(IProjectConfiguration baseConfiguration) { this.profiles = baseConfiguration.getSelectedProfiles(); this.activeProfiles = List.copyOf(baseConfiguration.getActiveProfileList()); this.inactiveProfiles = List.copyOf(baseConfiguration.getInactiveProfileList()); + this.globalSettingsFile = baseConfiguration.getGlobalSettingsFile(); + this.userSettingsFile = baseConfiguration.getUserSettingsFile(); } @Override @@ -735,6 +741,16 @@ public List getInactiveProfileList() { return inactiveProfiles; } + @Override + public String getGlobalSettingsFile() { + return globalSettingsFile; + } + + @Override + public String getUserSettingsFile() { + return userSettingsFile; + } + } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IProjectConfiguration.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IProjectConfiguration.java index f9dd85a204..024a6a9d66 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IProjectConfiguration.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IProjectConfiguration.java @@ -54,6 +54,10 @@ public interface IProjectConfiguration { File getMultiModuleProjectDirectory(); + String getGlobalSettingsFile(); + + String getUserSettingsFile(); + /** * Computes a hashcode over the contents of the given configuration, that is a semantic hash-code that can be used in * combination of {@link #contentsEquals(IProjectConfiguration, IProjectConfiguration)} @@ -65,7 +69,8 @@ public static int contentsHashCode(IProjectConfiguration configuration) { return Objects.hash(configuration.isResolveWorkspaceProjects(), configuration.getActiveProfileList(), configuration.getInactiveProfileList(), configuration.getLifecycleMappingId(), configuration.getConfigurationProperties(), configuration.getUserProperties(), - configuration.getMultiModuleProjectDirectory()); + configuration.getMultiModuleProjectDirectory(), configuration.getGlobalSettingsFile(), + configuration.getUserSettingsFile()); } public static boolean contentsEquals(IProjectConfiguration configuration, IProjectConfiguration other) { @@ -81,7 +86,9 @@ public static boolean contentsEquals(IProjectConfiguration configuration, IProje && Objects.equals(configuration.getInactiveProfileList(), other.getInactiveProfileList()) && Objects.equals(configuration.getConfigurationProperties(), other.getConfigurationProperties()) && Objects.equals(configuration.getUserProperties(), other.getUserProperties()) - && Objects.equals(configuration.getMultiModuleProjectDirectory(), other.getMultiModuleProjectDirectory()); + && Objects.equals(configuration.getMultiModuleProjectDirectory(), other.getMultiModuleProjectDirectory()) + && Objects.equals(configuration.getGlobalSettingsFile(), other.getGlobalSettingsFile()) + && Objects.equals(configuration.getUserSettingsFile(), other.getUserSettingsFile()); } } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/ResolverConfiguration.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/ResolverConfiguration.java index 98a89d01b3..56a61de51a 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/ResolverConfiguration.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/ResolverConfiguration.java @@ -64,6 +64,10 @@ public class ResolverConfiguration implements Serializable, IProjectConfiguratio private List userInactiveProfiles; + private String globalSettingsFile; + + private String userSettingsFile; + public ResolverConfiguration() { } @@ -77,9 +81,9 @@ public ResolverConfiguration(IProject project) { public ResolverConfiguration(IProjectConfiguration resolverConfiguration) { setLifecycleMappingId(resolverConfiguration.getLifecycleMappingId()); setMultiModuleProjectDirectory(resolverConfiguration.getMultiModuleProjectDirectory()); - Properties properties2 = new Properties(); - properties2.putAll(resolverConfiguration.getConfigurationProperties()); - setProperties(properties2); + Properties properties = new Properties(); + properties.putAll(resolverConfiguration.getConfigurationProperties()); + setProperties(properties); setResolveWorkspaceProjects(resolverConfiguration.isResolveWorkspaceProjects()); setSelectedProfiles(resolverConfiguration.getSelectedProfiles()); } @@ -193,6 +197,16 @@ public File getMultiModuleProjectDirectory() { return multiModuleProjectDirectory; } + @Override + public String getGlobalSettingsFile() { + return globalSettingsFile; + } + + @Override + public String getUserSettingsFile() { + return userSettingsFile; + } + /** * @param multiModuleProjectDirectory The multiModuleProjectDirectory to set. */ @@ -200,15 +214,15 @@ public void setMultiModuleProjectDirectory(File multiModuleProjectDirectory) { if(!Objects.equals(this.multiModuleProjectDirectory, multiModuleProjectDirectory)) { this.multiModuleProjectDirectory = multiModuleProjectDirectory; try { - Optional mavenProps = MavenProperties.getMavenArgs(multiModuleProjectDirectory); + Optional commandLine = MavenProperties.getMavenArgs(multiModuleProjectDirectory); Map props = new LinkedHashMap<>(); + commandLine.ifPresent(p -> p.getCliProperties(props::put)); + userProperties = Collections.unmodifiableMap(props); userActiveProfiles = new ArrayList<>(); userInactiveProfiles = new ArrayList<>(); - mavenProps.ifPresent(args -> { - args.getCliProperties(props::put); - args.getProfiles(userActiveProfiles::add, userInactiveProfiles::add); - }); - userProperties = Collections.unmodifiableMap(props); + commandLine.ifPresent(p -> p.getProfiles(userActiveProfiles::add, userInactiveProfiles::add)); + globalSettingsFile = commandLine.map(p -> p.getAlternateGlobalToolchainsFile()).orElse(null); + userSettingsFile = commandLine.map(p -> p.getAlternateUserToolchainsFile()).orElse(null); } catch(IOException ex) { //can't use it then... :-( MavenPluginActivator.getDefault().getLog().error("can't read maven args from " + multiModuleProjectDirectory, @@ -262,4 +276,4 @@ private static List parseProfiles(String profilesAsText, boolean status) } return profiles; } -} +} \ No newline at end of file