Author: sisbell Date: Wed Sep 17 06:52:46 2008 New Revision: 696299 URL: http://svn.apache.org/viewvc?rev=696299&view=rev Log: Some fixes for adding properties from active profiles to the interpolation list.
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java Wed Sep 17 06:52:46 2008 @@ -29,6 +29,7 @@ import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginManagement; import org.apache.maven.profiles.ProfileManager; +import org.apache.maven.profiles.Profile; import org.apache.maven.profiles.activation.DefaultProfileActivationContext; import org.apache.maven.profiles.activation.ProfileActivationContext; import org.apache.maven.project.MavenProject; @@ -146,23 +147,24 @@ execProps.putAll( config.getExecutionProperties() ); } - if ( inheritedInterpolationValues != null ) - { - execProps.putAll( inheritedInterpolationValues ); - } - else - { - inheritedInterpolationValues = new HashMap(); - } + execProps.putAll( inheritedInterpolationValues ); config.setExecutionProperties( execProps ); - //INTERPOLATION + //INTERPOLATION List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>(); - interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(), - PomInterpolatorTag.SYSTEM_PROPERTIES.name())); - interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(), - PomInterpolatorTag.USER_PROPERTIES.name())); + /* + for(Profile profile : (List<Profile>) request.getActiveProfiles()) + { + interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( profile.getProperties(), + PomInterpolatorTag.SYSTEM_PROPERTIES.name())); + } + */ + interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(), + PomInterpolatorTag.SYSTEM_PROPERTIES.name())); + + interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(), + PomInterpolatorTag.USER_PROPERTIES.name())); if(config.getBuildStartTime() != null) { interpolatorProperties.add(new InterpolatorProperty("${build.timestamp}", Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Wed Sep 17 06:52:46 2008 @@ -20,6 +20,7 @@ */ import org.apache.maven.ArtifactFilterManager; +import org.apache.maven.profiles.Profile; import org.apache.maven.path.PathTranslator; import org.apache.maven.shared.model.InterpolatorProperty; import org.apache.maven.artifact.Artifact; @@ -557,8 +558,15 @@ if ( dom != null ) { try - { + { List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>(); + /* + for(Profile profile : (List<Profile>) project.getActiveProfiles()) + { + interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( profile.getProperties(), + PomInterpolatorTag.SYSTEM_PROPERTIES.name())); + } + */ interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( session.getProjectBuilderConfiguration().getExecutionProperties(), PomInterpolatorTag.SYSTEM_PROPERTIES.name())); interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( session.getProjectBuilderConfiguration().getUserProperties(), Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Wed Sep 17 06:52:46 2008 @@ -341,19 +341,6 @@ return profileActivationContext.getActiveByDefaultProfileIds(); } - private static String getVersion( Model model ) - { - Parent parent = model.getParent(); - - String version = model.getVersion(); - if ( ( parent != null ) && ( version == null ) ) - { - version = parent.getVersion(); - } - - return version; - } - public static String getGroupId( Model model ) { Parent parent = model.getParent(); Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java Wed Sep 17 06:52:46 2008 @@ -70,8 +70,7 @@ injectBuild( profile, model ); Properties props = new Properties(); - props.putAll( model.getProperties() ); - props.putAll( profile.getProperties() ); + model.setProperties( props ); } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Sep 17 06:52:46 2008 @@ -42,10 +42,7 @@ import org.apache.maven.profiles.activation.ProfileActivationException; import org.apache.maven.profiles.build.ProfileAdvisor; import org.apache.maven.project.artifact.InvalidDependencyVersionException; -import org.apache.maven.project.builder.PomArtifactResolver; -import org.apache.maven.project.builder.ProjectBuilder; -import org.apache.maven.project.builder.PomInterpolatorTag; -import org.apache.maven.project.builder.PomClassicTransformer; +import org.apache.maven.project.builder.*; import org.apache.maven.project.validation.ModelValidationResult; import org.apache.maven.project.validation.ModelValidator; import org.apache.maven.project.workspace.ProjectWorkspace; @@ -136,12 +133,30 @@ if ( project == null ) { + List<Profile> activeProfiles; + try + { + activeProfiles = getActiveProfilesFromModel(new PomClassicDomainModel( + new FileInputStream( projectDescriptor )).getModel(), config, projectDescriptor, true); + } catch (IOException e) + { + throw new ProjectBuildingException("", e.getMessage()); + } + + Properties activeProfileProperties = new Properties(); + for(Profile profile : activeProfiles) + { + activeProfileProperties.putAll(profile.getProperties()); + } + project = readModelFromLocalPath( "unknown", projectDescriptor, new PomArtifactResolver( config.getLocalRepository(), repositoryHelper.buildArtifactRepositories( - getSuperProject( config, projectDescriptor, true ).getModel() ), artifactResolver ), config ); + getSuperProject( config, projectDescriptor, true ).getModel() ), artifactResolver ), config, + activeProfileProperties ); project.setFile( projectDescriptor ); - project = buildInternal( project.getModel(), config, projectDescriptor, project.getParentFile(), true ); + + project = buildMavenProject( project.getModel(), config, projectDescriptor, project.getParentFile(), activeProfiles); Build build = project.getBuild(); // NOTE: setting this script-source root before path translation, because @@ -195,9 +210,27 @@ artifactRepositories.addAll( repositoryHelper.buildArtifactRepositories( getSuperProject( config, artifact.getFile(), false ).getModel() ) ); + + List<Profile> activeProfiles; + try + { + activeProfiles = this.getActiveProfilesFromModel(new PomClassicDomainModel( + new FileInputStream( artifact.getFile())).getModel(), config, artifact.getFile(), true); + } catch (IOException e) + { + throw new ProjectBuildingException("", e.getMessage()); + } + + Properties activeProfileProperties = new Properties(); + for(Profile profile : activeProfiles) + { + activeProfileProperties.putAll(profile.getProperties()); + } + project = readModelFromLocalPath( "unknown", artifact.getFile(), new PomArtifactResolver( - config.getLocalRepository(), artifactRepositories, artifactResolver ), config ); - project = buildInternal( project.getModel(), config, artifact.getFile(), project.getParentFile(), false ); + config.getLocalRepository(), artifactRepositories, artifactResolver ), config, activeProfileProperties ); + project = buildMavenProject( project.getModel(), config, artifact.getFile(), project.getParentFile(), + activeProfiles); } artifact.setFile( f ); @@ -396,9 +429,9 @@ return logger; } - private MavenProject buildInternal( Model model, ProjectBuilderConfiguration config, File projectDescriptor, - File parentDescriptor, boolean isReactorProject ) - throws ProjectBuildingException + private List<Profile> getActiveProfilesFromModel(Model model, ProjectBuilderConfiguration config, + File projectDescriptor, boolean isReactorProject) + throws ProjectBuildingException { String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); @@ -423,6 +456,21 @@ profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false ); } + + List<Profile> projectProfiles = new ArrayList<Profile>(); + projectProfiles.addAll( profileAdvisor.applyActivatedProfiles( model, projectDescriptor, + isReactorProject, profileActivationContext ) ); + projectProfiles.addAll( profileAdvisor.applyActivatedExternalProfiles( model, projectDescriptor, + externalProfileManager ) ); + return projectProfiles; + } + + private MavenProject buildMavenProject( Model model, ProjectBuilderConfiguration config, File projectDescriptor, + File parentDescriptor, List<Profile> projectProfiles ) + throws ProjectBuildingException + { + String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); + MavenProject project; try { @@ -433,11 +481,6 @@ throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e ); } - List<Profile> projectProfiles = new ArrayList<Profile>(); - projectProfiles.addAll( profileAdvisor.applyActivatedProfiles( project.getModel(), project.getFile(), - isReactorProject, profileActivationContext ) ); - projectProfiles.addAll( profileAdvisor.applyActivatedExternalProfiles( project.getModel(), project.getFile(), - externalProfileManager ) ); project.setActiveProfiles( projectProfiles ); projectWorkspace.storeProjectByCoordinate( project ); @@ -479,35 +522,7 @@ "Maven super-POM contains an invalid repository!", e ); } - String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); - - ProfileActivationContext profileActivationContext; - ProfileManager externalProfileManager = config.getGlobalProfileManager(); - if ( externalProfileManager != null ) - { - // used to trigger the caching of SystemProperties in the container context... - try - { - externalProfileManager.getActiveProfiles(); - } - catch ( ProfileActivationException e ) - { - throw new ProjectBuildingException( projectId, "Failed to activate external profiles.", - projectDescriptor, e ); - } - profileActivationContext = externalProfileManager.getProfileActivationContext(); - } - else - { - profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false ); - } - - List<Profile> superProjectProfiles = new ArrayList<Profile>(); - superProjectProfiles.addAll( profileAdvisor.applyActivatedProfiles( model, projectDescriptor, isReactorProject, - profileActivationContext ) ); - superProjectProfiles.addAll( - profileAdvisor.applyActivatedExternalProfiles( model, projectDescriptor, externalProfileManager ) ); - superProject.setActiveProfiles( superProjectProfiles ); + superProject.setActiveProfiles( getActiveProfilesFromModel(model, config, projectDescriptor, isReactorProject) ); return superProject; } @@ -559,7 +574,7 @@ } private MavenProject readModelFromLocalPath( String projectId, File projectDescriptor, PomArtifactResolver resolver, - ProjectBuilderConfiguration config ) + ProjectBuilderConfiguration config, Properties profileProperties ) throws ProjectBuildingException { if ( projectDescriptor == null ) @@ -577,6 +592,11 @@ PomInterpolatorTag.SYSTEM_PROPERTIES.name())); interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(), PomInterpolatorTag.USER_PROPERTIES.name())); + if(profileProperties != null) + { + interpolatorProperties.addAll(InterpolatorProperty.toInterpolatorProperties( profileProperties, + PomInterpolatorTag.SYSTEM_PROPERTIES.name())); + } if(config.getBuildStartTime() != null) { @@ -597,7 +617,7 @@ { throw new ProjectBuildingException( projectId, "File = " + projectDescriptor.getAbsolutePath(), e ); } - + mavenProject.getProperties().putAll(profileProperties); return mavenProject; } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java?rev=696299&r1=696298&r2=696299&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java Wed Sep 17 06:52:46 2008 @@ -165,7 +165,18 @@ return ModelContainerAction.NOP; } } - return ModelContainerAction.DELETE;//TODO Verify - PluginManagement Section may make versions equal + else + { + if ( c.type.equals( type ) ) + { + return ModelContainerAction.DELETE; + } + else + { + return ModelContainerAction.NOP; + } + } + //TODO Verify - PluginManagement Section may make versions equal } if ( c.version.equals( version ) ) @@ -181,7 +192,14 @@ } else { - return ModelContainerAction.DELETE; + if ( c.type.equals( type ) ) + { + return ModelContainerAction.DELETE; + } + else + { + return ModelContainerAction.NOP; + } } } else