Index: maven-core/src/main/java/org/apache/maven/DefaultMaven.java =================================================================== --- maven-core/src/main/java/org/apache/maven/DefaultMaven.java (revision 469329) +++ maven-core/src/main/java/org/apache/maven/DefaultMaven.java (working copy) @@ -103,6 +103,8 @@ public void execute( MavenExecutionRequest request ) throws MavenExecutionException { + projectBuilder.setSettings( request.getSettings() ); + EventDispatcher dispatcher = request.getEventDispatcher(); String event = MavenEvents.REACTOR_EXECUTION; Index: maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java =================================================================== --- maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (revision 472324) +++ maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (working copy) @@ -22,6 +22,7 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.profiles.ProfileManager; import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.settings.Settings; import java.io.File; import java.util.List; @@ -88,4 +89,6 @@ MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository ) throws ProjectBuildingException; + + void setSettings(Settings settings); } Index: maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java =================================================================== --- maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (revision 472324) +++ maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (working copy) @@ -60,6 +60,7 @@ import org.apache.maven.project.validation.ModelValidationResult; import org.apache.maven.project.validation.ModelValidator; import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.settings.Settings; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; @@ -70,6 +71,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.InterpolationFilterReader; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.File; @@ -167,6 +169,8 @@ private ArtifactRepositoryFactory artifactRepositoryFactory; + private Settings settings; + // ---------------------------------------------------------------------- // I am making this available for use with a new method that takes a // a monitor wagon monitor as a parameter so that tools can use the @@ -281,6 +285,10 @@ } } + public void setSettings(Settings settings) { + this.settings = settings; + } + public MavenProject buildWithDependencies( File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager ) @@ -917,6 +925,7 @@ } // Must validate before artifact construction to make sure dependencies are good + ModelValidationResult validationResult = validator.validate( model ); String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); @@ -1299,7 +1308,8 @@ throw new InvalidProjectModelException( projectId, pomLocation, "Not a v4.0.0 POM." ); } - StringReader sReader = new StringReader( modelSource ); + Reader sReader = new InterpolationFilterReader( new StringReader( modelSource ), + getInterpolationVars() ); try { @@ -1312,6 +1322,18 @@ } } + public Map getInterpolationVars() { + java.util.Map result = new java.util.HashMap(); + if (settings != null) { + for ( Iterator it = settings.getActiveProfiles().iterator(); it.hasNext(); ) { + String profileId = (String) it.next(); + org.apache.maven.settings.Profile profile = (org.apache.maven.settings.Profile) settings.getProfilesAsMap().get( profileId ); + result.putAll( profile.getProperties() ); + } + } + return result; + } + private Model readModel( String projectId, URL url, boolean strict ) throws ProjectBuildingException {