You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/02/25 19:59:01 UTC
maven git commit: [MNG-5984] Maven core extension resolution ignores
repositories from activeByDefault profiles in settings.xml
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 <sc...@apache.org>
Authored: Thu Feb 25 19:46:13 2016 +0100
Committer: Christian Schulte <sc...@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();
}
}
+
}