Index: maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java =================================================================== --- maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (revision 466310) +++ 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; @@ -96,4 +97,6 @@ */ MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository, ProfileManager profileManager ) 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 466310) +++ 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.apache.maven.MavenTools; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; @@ -71,6 +72,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; @@ -169,6 +171,8 @@ private MavenTools mavenTools; + 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 @@ -290,6 +294,10 @@ } } + public void setSettings(Settings settings) { + this.settings = settings; + } + public MavenProject buildWithDependencies( File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager ) @@ -1329,7 +1337,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 { @@ -1342,6 +1351,18 @@ } } + private 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 {