Repository: maven Updated Branches: refs/heads/master 0a5351340 -> 425289c5e
[MNG-5984] Maven core extension resolution ignores repositories from activeByDefault profiles in settings.xml Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/425289c5 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/425289c5 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/425289c5 Branch: refs/heads/master Commit: 425289c5e21a822dc150e75fc03abcaf61473900 Parents: 0a53513 Author: Christian Schulte <schu...@apache.org> Authored: Thu Feb 25 19:46:13 2016 +0100 Committer: Christian Schulte <schu...@apache.org> Committed: Thu Feb 25 19:51:13 2016 +0100 ---------------------------------------------------------------------- .../SettingsXmlConfigurationProcessor.java | 157 ++++++++++++++----- 1 file changed, 114 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/425289c5/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java ---------------------------------------------------------------------- diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java b/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java index 791a226..1a57baa 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java @@ -21,6 +21,7 @@ package org.apache.maven.cli.configuration; import java.io.File; import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.List; import org.apache.commons.cli.CommandLine; @@ -31,9 +32,16 @@ import org.apache.maven.cli.CLIManager; import org.apache.maven.cli.CliRequest; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionRequestPopulationException; +import org.apache.maven.model.Profile; +import org.apache.maven.model.Repository; +import org.apache.maven.model.building.DefaultModelProblem; +import org.apache.maven.model.building.ModelProblem; +import org.apache.maven.model.building.ModelProblemCollector; +import org.apache.maven.model.building.ModelProblemCollectorRequest; +import org.apache.maven.model.profile.DefaultProfileActivationContext; +import org.apache.maven.model.profile.ProfileSelector; import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Proxy; -import org.apache.maven.settings.Repository; import org.apache.maven.settings.Server; import org.apache.maven.settings.Settings; import org.apache.maven.settings.SettingsUtils; @@ -51,6 +59,7 @@ import org.slf4j.Logger; public class SettingsXmlConfigurationProcessor implements ConfigurationProcessor { + public static final String HINT = "settings"; public static final String USER_HOME = System.getProperty( "user.home" ); @@ -59,8 +68,8 @@ public class SettingsXmlConfigurationProcessor public static final File DEFAULT_USER_SETTINGS_FILE = new File( USER_MAVEN_CONFIGURATION_HOME, "settings.xml" ); - public static final File DEFAULT_GLOBAL_SETTINGS_FILE = new File( System.getProperty( "maven.home", System - .getProperty( "user.dir", "" ) ), "conf/settings.xml" ); + public static final File DEFAULT_GLOBAL_SETTINGS_FILE = + new File( System.getProperty( "maven.home", System.getProperty( "user.dir", "" ) ), "conf/settings.xml" ); @Requirement private Logger logger; @@ -71,6 +80,9 @@ public class SettingsXmlConfigurationProcessor @Requirement private SettingsDecrypter settingsDecrypter; + @Requirement + private ProfileSelector profileSelector; + @Override public void process( CliRequest cliRequest ) throws Exception @@ -88,8 +100,9 @@ public class SettingsXmlConfigurationProcessor if ( !userSettingsFile.isFile() ) { - throw new FileNotFoundException( "The specified user settings file does not exist: " - + userSettingsFile ); + throw new FileNotFoundException( String.format( "The specified user settings file does not exist: %s", + userSettingsFile ) ); + } } else @@ -106,8 +119,9 @@ public class SettingsXmlConfigurationProcessor if ( !globalSettingsFile.isFile() ) { - throw new FileNotFoundException( "The specified global settings file does not exist: " - + globalSettingsFile ); + throw new FileNotFoundException( String.format( "The specified global settings file does not exist: %s", + globalSettingsFile ) ); + } } else @@ -129,10 +143,13 @@ public class SettingsXmlConfigurationProcessor request.getEventSpyDispatcher().onEvent( settingsRequest ); } - logger.debug( "Reading global settings from " - + getLocation( settingsRequest.getGlobalSettingsSource(), settingsRequest.getGlobalSettingsFile() ) ); - logger.debug( "Reading user settings from " - + getLocation( settingsRequest.getUserSettingsSource(), settingsRequest.getUserSettingsFile() ) ); + logger.debug( String.format( "Reading global settings from %s", + getLocation( settingsRequest.getGlobalSettingsSource(), + settingsRequest.getGlobalSettingsFile() ) ) ); + + logger.debug( String.format( "Reading user settings from %s", + getLocation( settingsRequest.getUserSettingsSource(), + settingsRequest.getUserSettingsFile() ) ) ); SettingsBuildingResult settingsResult = settingsBuilder.build( settingsRequest ); @@ -154,6 +171,89 @@ public class SettingsXmlConfigurationProcessor } logger.warn( "" ); } + + // profile activation + final DefaultProfileActivationContext profileActivationContext = new DefaultProfileActivationContext(); + profileActivationContext.setActiveProfileIds( request.getActiveProfiles() ); + profileActivationContext.setInactiveProfileIds( request.getInactiveProfiles() ); + profileActivationContext.setSystemProperties( request.getSystemProperties() ); + profileActivationContext.setUserProperties( request.getUserProperties() ); + profileActivationContext.setProjectDirectory( ( request.getPom() != null ) + ? request.getPom().getParentFile() + : null ); + + final List<ModelProblem> modelProblems = new ArrayList<>(); + final List<Profile> activeProfiles = + this.profileSelector.getActiveProfiles( request.getProfiles(), profileActivationContext, + new ModelProblemCollector() + { + + @Override + public void add( final ModelProblemCollectorRequest req ) + { + modelProblems.add( new DefaultModelProblem( + req.getMessage(), req.getSeverity(), + req.getVersion(), "settings.xml", -1, -1, + null, req.getException() ) ); + + } + + } ); + + if ( !modelProblems.isEmpty() ) + { + logger.warn( "" ); + logger.warn( "Some problems were encountered while processing profiles" ); + + for ( final ModelProblem problem : modelProblems ) + { + logger.warn( problem.getMessage(), problem.getException() ); + } + + logger.warn( "" ); + } + + if ( !activeProfiles.isEmpty() ) + { + for ( final Profile profile : activeProfiles ) + { + final List<Repository> remoteRepositories = profile.getRepositories(); + + for ( final Repository remoteRepository : remoteRepositories ) + { + try + { + request.addRemoteRepository( + MavenRepositorySystem.buildArtifactRepository( remoteRepository ) ); + + } + catch ( final InvalidRepositoryException e ) + { + logger.warn( String.format( "Failure adding repository '%s' from profile '%s'.", + remoteRepository.getId(), profile.getId() ), e ); + + } + } + + final List<Repository> pluginRepositories = profile.getPluginRepositories(); + + for ( final Repository pluginRepository : pluginRepositories ) + { + try + { + request.addPluginArtifactRepository( + MavenRepositorySystem.buildArtifactRepository( pluginRepository ) ); + + } + catch ( InvalidRepositoryException e ) + { + logger.warn( String.format( "Failure adding plugin repository '%s' from profile '%s'.", + pluginRepository.getId(), profile.getId() ), e ); + + } + } + } + } } private MavenExecutionRequest populateFromSettings( MavenExecutionRequest request, Settings settings ) @@ -218,43 +318,13 @@ public class SettingsXmlConfigurationProcessor request.addMirror( mirror ); } - request.setActiveProfiles( settings.getActiveProfiles() ); + request.addActiveProfiles( settings.getActiveProfiles() ); for ( org.apache.maven.settings.Profile rawProfile : settings.getProfiles() ) { request.addProfile( SettingsUtils.convertFromSettingsProfile( rawProfile ) ); - - if ( settings.getActiveProfiles().contains( rawProfile.getId() ) ) - { - List<Repository> remoteRepositories = rawProfile.getRepositories(); - for ( Repository remoteRepository : remoteRepositories ) - { - try - { - request.addRemoteRepository( - MavenRepositorySystem.buildArtifactRepository( remoteRepository ) ); - } - catch ( InvalidRepositoryException e ) - { - // do nothing for now - } - } - - List<Repository> pluginRepositories = rawProfile.getPluginRepositories(); - for ( Repository pluginRepository : pluginRepositories ) - { - try - { - request.addPluginArtifactRepository( - MavenRepositorySystem.buildArtifactRepository( pluginRepository ) ); - } - catch ( InvalidRepositoryException e ) - { - // do nothing for now - } - } - } } + return request; } @@ -287,4 +357,5 @@ public class SettingsXmlConfigurationProcessor return new File( workingDirectory, file.getPath() ).getAbsoluteFile(); } } + }