You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/08/26 09:30:32 UTC
svn commit: r240177 - in /maven/components/trunk/maven-project/src:
main/java/org/apache/maven/project/
main/java/org/apache/maven/project/interpolation/
test/java/org/apache/maven/project/interpolation/
Author: brett
Date: Fri Aug 26 00:30:21 2005
New Revision: 240177
URL: http://svn.apache.org/viewcvs?rev=240177&view=rev
Log:
PR: MNG-789
interpolate ${basedir} in the model
Modified:
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/interpolation/ModelInterpolator.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=240177&r1=240176&r2=240177&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 Fri Aug 26 00:30:21 2005
@@ -554,7 +554,10 @@
activeProfiles.addAll( injectedProfiles );
// TODO: Clean this up...we're using this to 'jump' the interpolation step for model properties not expressed in XML.
- model = modelInterpolator.interpolate( model );
+ // [BP] - Can this above comment be explained?
+ // We don't need all the project methods that are added over those in the model, but we do need basedir
+ Map context = Collections.singletonMap( "basedir", project.getBasedir() );
+ model = modelInterpolator.interpolate( model, context );
// interpolation is before injection, because interpolation is off-limits in the injected variables
modelDefaultsInjector.injectDefaults( model );
@@ -563,11 +566,7 @@
Model originalModel = project.getOriginalModel();
- //=======================================================================
- //
- // WATCH OUT FOR THIS LINE! in-project is NOT the same as out-project!!!
- //
- //=======================================================================
+ // We will return a different project object using the new model (hence the need to return a project, not just modify the parameter)
project = new MavenProject( model );
project.setOriginalModel( originalModel );
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java?rev=240177&r1=240176&r2=240177&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java Fri Aug 26 00:30:21 2005
@@ -18,6 +18,8 @@
import org.apache.maven.model.Model;
+import java.util.Map;
+
/**
* @author jdcasey
* <p/>
@@ -27,7 +29,7 @@
{
String ROLE = ModelInterpolator.class.getName();
- Model interpolate( Model project )
+ Model interpolate( Model project, Map context )
throws ModelInterpolationException;
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=240177&r1=240176&r2=240177&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Fri Aug 26 00:30:21 2005
@@ -30,6 +30,7 @@
import java.io.StringWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.Map;
/**
* @author jdcasey Created on Feb 3, 2005
@@ -44,7 +45,7 @@
/**
* Added: Feb 3, 2005 by jdcasey
*/
- public Model interpolate( Model model )
+ public Model interpolate( Model model, Map context )
throws ModelInterpolationException
{
StringWriter sWriter = new StringWriter();
@@ -60,7 +61,7 @@
}
String serializedModel = sWriter.toString();
- serializedModel = interpolateInternal( serializedModel, model );
+ serializedModel = interpolateInternal( serializedModel, model, context );
StringReader sReader = new StringReader( serializedModel );
@@ -86,7 +87,7 @@
/**
* Added: Feb 3, 2005 by jdcasey
*/
- private String interpolateInternal( String src, Model model )
+ private String interpolateInternal( String src, Model model, Map context )
{
String result = src;
Matcher matcher = EXPRESSION_PATTERN.matcher( result );
@@ -95,11 +96,14 @@
String wholeExpr = matcher.group( 0 );
String realExpr = matcher.group( 2 );
- Object value = null;
+ Object value = context.get( realExpr );
try
{
- value = ReflectionValueExtractor.evaluate( realExpr, model );
+ if ( value == null )
+ {
+ value = ReflectionValueExtractor.evaluate( realExpr, model );
+ }
}
catch ( Exception e )
{
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=240177&r1=240176&r2=240177&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Fri Aug 26 00:30:21 2005
@@ -19,6 +19,10 @@
import junit.framework.TestCase;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Repository;
+
+import java.util.Collections;
+import java.util.Map;
/**
* @author jdcasey
@@ -27,6 +31,16 @@
public class RegexBasedModelInterpolatorTest
extends TestCase
{
+ private Map context;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ context = Collections.singletonMap( "basedir", "myBasedir" );
+ }
+
public void testShouldInterpolateDependencyVersionToSetSameAsProjectVersion()
throws ModelInterpolationException
{
@@ -38,7 +52,7 @@
model.addDependency( dep );
- Model out = new RegexBasedModelInterpolator().interpolate( model );
+ Model out = new RegexBasedModelInterpolator().interpolate( model, context );
assertEquals( "3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
}
@@ -54,7 +68,7 @@
model.addDependency( dep );
- Model out = new RegexBasedModelInterpolator().interpolate( model );
+ Model out = new RegexBasedModelInterpolator().interpolate( model, context );
assertEquals( "${something}", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
}
@@ -71,8 +85,27 @@
model.addDependency( dep );
- Model out = new RegexBasedModelInterpolator().interpolate( model );
+ Model out = new RegexBasedModelInterpolator().interpolate( model, context );
assertEquals( "foo-3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
+ }
+
+ public void testBasedir()
+ throws ModelInterpolationException
+ {
+ Model model = new Model();
+ model.setVersion( "3.8.1" );
+ model.setArtifactId( "foo" );
+
+ Repository repository = new Repository();
+
+ repository.setUrl( "file://localhost/${basedir}/temp-repo" );
+
+ model.addRepository( repository );
+
+ Model out = new RegexBasedModelInterpolator().interpolate( model, context );
+
+ assertEquals( "file://localhost/myBasedir/temp-repo",
+ ( (Repository) out.getRepositories().get( 0 ) ).getUrl() );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org