You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/04/11 21:53:06 UTC
svn commit: r647287 - 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: jdcasey
Date: Fri Apr 11 12:53:04 2008
New Revision: 647287
URL: http://svn.apache.org/viewvc?rev=647287&view=rev
Log:
Fixing interpolation for project.basedir and pom.basedir, by internalizing the basedir handling into the interpolator (now that we're passing in projectDir, it's easier to handle there).
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/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/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=647287&r1=647286&r2=647287&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 Apr 11 12:53:04 2008
@@ -973,8 +973,6 @@
if ( pomFile != null )
{
projectDir = pomFile.getAbsoluteFile().getParentFile();
-
- context.put( "basedir", projectDir.getAbsolutePath() );
}
Map overrideContext = new HashMap();
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=647287&r1=647286&r2=647287&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 Apr 11 12:53:04 2008
@@ -181,7 +181,12 @@
* @param overrideContext
* @param outputDebugMessages
*/
- private String interpolateInternal( String src, Model model, Map context, Map overrideContext, File projectDir, boolean outputDebugMessages )
+ private String interpolateInternal( String src,
+ Model model,
+ Map context,
+ Map overrideContext,
+ final File projectDir,
+ boolean outputDebugMessages )
throws ModelInterpolationException
{
Logger logger = getLogger();
@@ -196,9 +201,23 @@
TRANSLATED_PATH_EXPRESSIONS,
projectDir, pathTranslator );
+ ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new ValueSource(){
+ public Object getValue( String expression )
+ {
+ if ( projectDir != null && "basedir".equals( expression ) )
+ {
+ return projectDir.getAbsolutePath();
+ }
+
+ return null;
+ }
+ },
+ PROJECT_PREFIXES, true );
+
RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
// NOTE: Order counts here!
+ interpolator.addValueSource( basedirValueSource );
interpolator.addValueSource( new MapBasedValueSource( overrideContext ) );
interpolator.addValueSource( modelValueSource1 );
interpolator.addValueSource( new PrefixedValueSourceWrapper( new MapBasedValueSource( model.getProperties() ), PROJECT_PREFIXES, true ) );
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=647287&r1=647286&r2=647287&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 Apr 11 12:53:04 2008
@@ -19,18 +19,23 @@
* under the License.
*/
-import junit.framework.TestCase;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DeploymentRepository;
+import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
import org.apache.maven.model.Organization;
import org.apache.maven.model.Repository;
import org.apache.maven.model.Scm;
+import java.io.File;
import java.io.IOException;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import junit.framework.TestCase;
+
/**
* @author jdcasey
* @version $Id$
@@ -46,6 +51,34 @@
super.setUp();
context = Collections.singletonMap( "basedir", "myBasedir" );
+ }
+
+ public void testShouldInterpolateProjectDotBasedirInDistributionManagement()
+ throws ModelInterpolationException, IOException
+ {
+ Model model = new Model();
+ DistributionManagement dm = new DistributionManagement();
+ DeploymentRepository repo = new DeploymentRepository();
+
+ // from IT0062...
+ repo.setUrl( "http://localhost/${project.basedir}/target/test-repo" );
+
+ dm.setRepository( repo );
+ model.setDistributionManagement( dm );
+
+ Map context = new HashMap();
+ String path = "path/to/project";
+
+ File basedir = new File( path ).getAbsoluteFile();
+
+ Model out = new RegexBasedModelInterpolator().interpolate( model,
+ context,
+ Collections.EMPTY_MAP,
+ basedir,
+ false );
+
+ assertEquals( "http://localhost/" + basedir.getAbsolutePath() + "/target/test-repo",
+ out.getDistributionManagement().getRepository().getUrl() );
}
public void testShouldNotThrowExceptionOnReferenceToNonExistentValue()