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/06/26 18:34:28 UTC
svn commit: r671936 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/execution/
maven-core/src/main/java/org/apache/maven/extension/
maven-embedder/src/main/java/org/apache/maven/cli/
maven-project/src/main/java/org/apache/maven/...
Author: jdcasey
Date: Thu Jun 26 09:34:27 2008
New Revision: 671936
URL: http://svn.apache.org/viewvc?rev=671936&view=rev
Log:
Adding -V|--show-version, and cleaning up interpolation to correspond with recent refactoriing in 2.0.x branch. Also, changing super-POM to use basedir/build.directory expressions in build paths, to enable paths to respond to changes in other, more basic paths (like outputDirectory responding to a change in build.directory). This is in preparation for merging over the dynamicBuild behavior.
Added:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.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/DefaultProjectBuilderConfiguration.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.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/PathTranslatingValueSource.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java Thu Jun 26 09:34:27 2008
@@ -743,6 +743,7 @@
projectBuildingConfiguration.setExecutionProperties( getProperties() );
projectBuildingConfiguration.setGlobalProfileManager( getProfileManager() );
projectBuildingConfiguration.setUserProperties( getUserProperties() );
+ projectBuildingConfiguration.setBuildStartTime( getStartTime() );
}
return projectBuildingConfiguration;
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java Thu Jun 26 09:34:27 2008
@@ -25,6 +25,7 @@
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuilderConfiguration;
import org.apache.maven.realm.MavenRealmManager;
import org.apache.maven.reporting.MavenReport;
import org.apache.maven.settings.Settings;
@@ -276,4 +277,9 @@
return buildPlans;
}
+ public ProjectBuilderConfiguration getProjectBuilderConfiguration()
+ {
+ return request.getProjectBuildingConfiguration();
+ }
+
}
\ No newline at end of file
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=671936&r1=671935&r2=671936&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 Thu Jun 26 09:34:27 2008
@@ -162,7 +162,7 @@
inheritedInterpolationValues = new HashMap();
}
- model = modelInterpolator.interpolate( model, inheritedInterpolationValues, request.getUserProperties(), false );
+ model = modelInterpolator.interpolate( model, modelPom.getParentFile(), request.getProjectBuildingConfiguration(), getLogger().isDebugEnabled() );
grabManagedPluginsWithExtensionsFlagTurnedOn( model, managedPluginsWithExtensionsFlag );
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java Thu Jun 26 09:34:27 2008
@@ -56,6 +56,8 @@
public static final char VERSION = 'v';
+ public static final char SHOW_VERSION = 'V';
+
public static final char NON_RECURSIVE = 'N';
public static final char UPDATE_SNAPSHOTS = 'U';
@@ -161,6 +163,10 @@
options.addOption( OptionBuilder.withLongOpt( "log-file" ).hasArg().withDescription(
"Log file to where all build output will go." ).create( LOG_FILE ) );
+
+ options.addOption(
+ OptionBuilder.withLongOpt( "show-version" ).withDescription( "Display version information WITHOUT stopping build" ).create(
+ SHOW_VERSION ) );
}
public CommandLine parse( String[] args )
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java Thu Jun 26 09:34:27 2008
@@ -128,7 +128,7 @@
return 0;
}
- else if ( debug )
+ else if ( debug || commandLine.hasOption( CLIManager.SHOW_VERSION ) )
{
CLIReportingUtils.showVersion();
}
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=671936&r1=671935&r2=671936&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 Thu Jun 26 09:34:27 2008
@@ -201,6 +201,7 @@
}
/** @deprecated */
+ @Deprecated
public MavenProject buildFromRepository( Artifact artifact,
List remoteArtifactRepositories,
ArtifactRepository localRepository,
@@ -965,18 +966,6 @@
List activeProfiles = project.getActiveProfiles();
- // TODO: Clean this up...we're using this to 'jump' the interpolation step for model properties not expressed in XML.
- // [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
- // mkleint - using System.getProperties() is almost definitely bad for embedding.
- Map context = new HashMap();
-
- // [MNG-2339] ensure the system properties are still interpolated for backwards compat, but the model values must win
- if ( config.getExecutionProperties() != null && !config.getExecutionProperties().isEmpty() )
- {
- context.putAll( config.getExecutionProperties() );
- }
-
File projectDir = null;
if ( pomFile != null )
@@ -984,13 +973,7 @@
projectDir = pomFile.getAbsoluteFile().getParentFile();
}
- Map overrideContext = new HashMap();
- if ( !isSuperPom && config.getUserProperties() != null && !config.getUserProperties().isEmpty() )
- {
- overrideContext.putAll( config.getUserProperties() );
- }
-
- model = modelInterpolator.interpolate( model, context, overrideContext, projectDir, true );
+ model = modelInterpolator.interpolate( model, projectDir, config, getLogger().isDebugEnabled() );
// We must inject any imported dependencyManagement information ahead of the defaults injection.
if ( !isSuperPom )
@@ -1309,6 +1292,7 @@
* @return
* @throws ProjectBuildingException
*/
+ @Deprecated
protected Set createPluginArtifacts( String projectId,
List plugins, String pomLocation )
throws ProjectBuildingException
@@ -1372,6 +1356,7 @@
* @return
* @throws ProjectBuildingException
*/
+ @Deprecated
protected Set createReportArtifacts( String projectId,
List reports, String pomLocation )
throws ProjectBuildingException
@@ -1431,6 +1416,7 @@
* @return
* @throws ProjectBuildingException
*/
+ @Deprecated
protected Set createExtensionArtifacts( String projectId,
List extensions, String pomLocation )
throws ProjectBuildingException
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java Thu Jun 26 09:34:27 2008
@@ -3,6 +3,7 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.profiles.ProfileManager;
+import java.util.Date;
import java.util.Properties;
public class DefaultProjectBuilderConfiguration
@@ -17,6 +18,8 @@
private Properties executionProperties = System.getProperties();
+ private Date buildStartTime;
+
public DefaultProjectBuilderConfiguration()
{
}
@@ -70,4 +73,15 @@
return this;
}
+ public Date getBuildStartTime()
+ {
+ return buildStartTime;
+ }
+
+ public ProjectBuilderConfiguration setBuildStartTime( Date buildStartTime )
+ {
+ this.buildStartTime = buildStartTime;
+ return this;
+ }
+
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java Thu Jun 26 09:34:27 2008
@@ -3,6 +3,7 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.profiles.ProfileManager;
+import java.util.Date;
import java.util.Properties;
public interface ProjectBuilderConfiguration
@@ -24,4 +25,8 @@
ProjectBuilderConfiguration setExecutionProperties( Properties executionProperties );
+ Date getBuildStartTime();
+
+ ProjectBuilderConfiguration setBuildStartTime( Date buildStartTime );
+
}
Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java?rev=671936&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java Thu Jun 26 09:34:27 2008
@@ -0,0 +1,32 @@
+package org.apache.maven.project.interpolation;
+
+import org.codehaus.plexus.interpolation.ValueSource;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class BuildTimestampValueSource
+ implements ValueSource
+{
+
+ private String formattedDate;
+
+ public BuildTimestampValueSource( Date startTime, String format )
+ {
+ if ( startTime != null )
+ {
+ formattedDate = new SimpleDateFormat( format ).format( startTime );
+ }
+ }
+
+ public Object getValue( String expression )
+ {
+ if ( "build.timestamp".equals( expression ) || "maven.build.timestamp".equals( expression ) )
+ {
+ return formattedDate;
+ }
+
+ return null;
+ }
+
+}
Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/ModelInterpolator.java?rev=671936&r1=671935&r2=671936&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 Thu Jun 26 09:34:27 2008
@@ -20,6 +20,7 @@
*/
import org.apache.maven.model.Model;
+import org.apache.maven.project.ProjectBuilderConfiguration;
import java.io.File;
import java.util.Map;
@@ -31,27 +32,39 @@
*/
public interface ModelInterpolator
{
+ String DEFAULT_BUILD_TIMESTAMP_FORMAT = "yyyyMMdd-hhmm";
+
+ String BUILD_TIMESTAMP_FORMAT_PROPERTY = "maven.build.timestamp.format";
+
String ROLE = ModelInterpolator.class.getName();
+ /**
+ * @deprecated Use {@link ModelInterpolator#interpolate(Model, File, ProjectBuilderConfiguration, boolean)} instead.
+ */
+ @Deprecated
Model interpolate( Model project,
- Map context )
+ Map<String, ?> context )
throws ModelInterpolationException;
+ /**
+ * @deprecated Use {@link ModelInterpolator#interpolate(Model, File, ProjectBuilderConfiguration, boolean)} instead.
+ */
+ @Deprecated
Model interpolate( Model model,
- Map context,
+ Map<String, ?> context,
boolean strict )
throws ModelInterpolationException;
Model interpolate( Model model,
- Map context,
- Map overrideContext,
- boolean outputDebugMessages )
+ File projectDir,
+ ProjectBuilderConfiguration config,
+ boolean debugEnabled )
throws ModelInterpolationException;
- Model interpolate( Model model,
- Map context,
- Map overrideContext,
- File projectDir,
- boolean outputDebugMessages )
+ String interpolate( String src,
+ Model model,
+ File projectDir,
+ ProjectBuilderConfiguration config,
+ boolean debugEnabled )
throws ModelInterpolationException;
}
\ No newline at end of file
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java Thu Jun 26 09:34:27 2008
@@ -11,11 +11,11 @@
extends AbstractFunctionValueSourceWrapper
{
- private final List unprefixedPathKeys;
+ private final List<String> unprefixedPathKeys;
private final File projectDir;
private final PathTranslator pathTranslator;
- protected PathTranslatingValueSource( ValueSource valueSource, List unprefixedPathKeys, File projectDir, PathTranslator pathTranslator )
+ protected PathTranslatingValueSource( ValueSource valueSource, List<String> unprefixedPathKeys, File projectDir, PathTranslator pathTranslator )
{
super( valueSource );
this.unprefixedPathKeys = unprefixedPathKeys;
@@ -23,6 +23,7 @@
this.pathTranslator = pathTranslator;
}
+ @Override
protected Object executeFunction( String expression,
Object value )
{
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=671936&r1=671935&r2=671936&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 Thu Jun 26 09:34:27 2008
@@ -22,6 +22,8 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.ProjectBuilderConfiguration;
import org.apache.maven.project.path.PathTranslator;
import org.codehaus.plexus.interpolation.InterpolationException;
import org.codehaus.plexus.interpolation.MapBasedValueSource;
@@ -34,7 +36,6 @@
import org.codehaus.plexus.interpolation.ValueSource;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.File;
@@ -43,12 +44,10 @@
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.util.Properties;
/**
* Use a regular expression search to find and resolve expressions within the POM.
@@ -61,14 +60,13 @@
extends AbstractLogEnabled
implements ModelInterpolator
{
- private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{([^}]+)\\}" );
- private static final List PROJECT_PREFIXES = Arrays.asList( new String[]{ "pom.", "project." } );
- private static final List TRANSLATED_PATH_EXPRESSIONS;
+ private static final List<String> PROJECT_PREFIXES = Arrays.asList( new String[]{ "pom.", "project." } );
+ private static final List<String> TRANSLATED_PATH_EXPRESSIONS;
static
{
- List translatedPrefixes = new ArrayList();
+ List<String> translatedPrefixes = new ArrayList<String>();
// MNG-1927, MNG-2124, MNG-3355:
// If the build section is present and the project directory is non-null, we should make
@@ -91,25 +89,28 @@
{
}
- public Model interpolate( Model model, Map context )
+ public Model interpolate( Model model, Map<String, ?> context )
throws ModelInterpolationException
{
- return interpolate( model, context, Collections.EMPTY_MAP, null, true );
- }
+ Properties props = new Properties();
+ props.putAll( context );
- public Model interpolate( Model model, Map context, boolean strict )
- throws ModelInterpolationException
- {
- return interpolate( model, context, Collections.EMPTY_MAP, null, true );
+ return interpolate( model,
+ null,
+ new DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
+ true );
}
- public Model interpolate( Model model,
- Map context,
- Map overrideContext,
- boolean strict )
+ public Model interpolate( Model model, Map<String, ?> context, boolean strict )
throws ModelInterpolationException
{
- return interpolate( model, context, Collections.EMPTY_MAP, null, true );
+ Properties props = new Properties();
+ props.putAll( context );
+
+ return interpolate( model,
+ null,
+ new DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
+ true );
}
/**
@@ -125,10 +126,10 @@
* or userProperties in the execution request.
* @param projectDir The directory from which the current model's pom was read.
* @param strict This parameter is ignored!
- * @param outputDebugMessages If true, print any feedback from the interpolator out to the DEBUG log-level.
+ * @param debugMessages If true, print any feedback from the interpolator out to the DEBUG log-level.
* @return The resolved instance of the inbound Model. This is a different instance!
*/
- public Model interpolate( Model model, Map context, Map overrideContext, File projectDir, boolean outputDebugMessages )
+ public Model interpolate( Model model, File projectDir, ProjectBuilderConfiguration config, boolean debugMessages )
throws ModelInterpolationException
{
StringWriter sWriter = new StringWriter();
@@ -144,7 +145,7 @@
}
String serializedModel = sWriter.toString();
- serializedModel = interpolateInternal( serializedModel, model, context, overrideContext, projectDir, outputDebugMessages );
+ serializedModel = interpolate( serializedModel, model, projectDir, config, debugMessages );
StringReader sReader = new StringReader( serializedModel );
@@ -179,18 +180,25 @@
* <li>If the value is null, get it from the model properties.</li>
* <li>
* @param overrideContext
- * @param outputDebugMessages
+ * @param debugMessages
*/
- private String interpolateInternal( String src,
+ public String interpolate( String src,
Model model,
- Map context,
- Map overrideContext,
final File projectDir,
- boolean outputDebugMessages )
+ ProjectBuilderConfiguration config,
+ boolean debugMessages )
throws ModelInterpolationException
{
Logger logger = getLogger();
+ String timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
+
+ Properties modelProperties = model.getProperties();
+ if ( modelProperties != null )
+ {
+ timestampFormat = modelProperties.getProperty( BUILD_TIMESTAMP_FORMAT_PROPERTY, timestampFormat );
+ }
+
ValueSource baseModelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
ValueSource modelValueSource1 = new PathTranslatingValueSource( baseModelValueSource1,
TRANSLATED_PATH_EXPRESSIONS,
@@ -218,76 +226,34 @@
// NOTE: Order counts here!
interpolator.addValueSource( basedirValueSource );
- interpolator.addValueSource( new MapBasedValueSource( overrideContext ) );
+ interpolator.addValueSource( new BuildTimestampValueSource( config.getBuildStartTime(), timestampFormat ) );
+ interpolator.addValueSource( new MapBasedValueSource( config.getExecutionProperties() ) );
interpolator.addValueSource( modelValueSource1 );
- interpolator.addValueSource( new PrefixedValueSourceWrapper( new MapBasedValueSource( model.getProperties() ), PROJECT_PREFIXES, true ) );
+ interpolator.addValueSource( new PrefixedValueSourceWrapper( new MapBasedValueSource( modelProperties ), PROJECT_PREFIXES, true ) );
interpolator.addValueSource( modelValueSource2 );
- interpolator.addValueSource( new MapBasedValueSource( context ) );
+ interpolator.addValueSource( new MapBasedValueSource( config.getUserProperties() ) );
RecursionInterceptor recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES );
String result = src;
- Matcher matcher = EXPRESSION_PATTERN.matcher( result );
- while ( matcher.find() )
+ try
{
- String wholeExpr = matcher.group( 0 );
-
- Object value;
- try
- {
- value = interpolator.interpolate( wholeExpr, "", recursionInterceptor );
- }
- catch( InterpolationException e )
- {
- throw new ModelInterpolationException( e.getMessage(), e );
- }
-
- if ( value == null || value.equals( wholeExpr ) )
- {
- continue;
- }
-
- // FIXME: Does this account for the case where ${project.build.directory} -> ${build.directory}??
- if ( value != null )
- {
- // if the expression refers to itself, skip it.
- // replace project. expressions with pom. expressions to circumvent self-referencing expressions using
- // the 2 different model expressions.
- if ( StringUtils.replace( value.toString(), "${project.", "${pom." ).indexOf(
- StringUtils.replace( wholeExpr, "${project.", "${pom." ) ) > -1 )
- {
- throw new ModelInterpolationException( wholeExpr, "Expression value '" + value
- + "' references itself in '" + model.getId() + "'." );
- }
-
- result = StringUtils.replace( result, wholeExpr, value.toString() );
- // could use:
- // result = matcher.replaceFirst( stringValue );
- // but this could result in multiple lookups of stringValue, and replaceAll is not correct behaviour
- matcher.reset( result );
- }
-
-/*
- // This is the desired behaviour, however there are too many crappy poms in the repo and an issue with the
- // timing of executing the interpolation
-
- else
- {
- throw new ModelInterpolationException(
- "Expression '" + wholeExpr + "' did not evaluate to anything in the model" );
- }
-*/
+ result = interpolator.interpolate( result, "", recursionInterceptor );
+ }
+ catch( InterpolationException e )
+ {
+ throw new ModelInterpolationException( e.getMessage(), e );
}
- if ( outputDebugMessages )
+ if ( debugMessages )
{
- List feedback = interpolator.getFeedback();
+ List<?> feedback = interpolator.getFeedback();
if ( feedback != null && !feedback.isEmpty() )
{
logger.debug( "Maven encountered the following problems during initial POM interpolation:" );
Object last = null;
- for ( Iterator it = feedback.iterator(); it.hasNext(); )
+ for ( Iterator<?> it = feedback.iterator(); it.hasNext(); )
{
Object next = it.next();
Modified: maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=671936&r1=671935&r2=671936&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (original)
+++ maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Thu Jun 26 09:34:27 2008
@@ -50,21 +50,21 @@
</pluginRepositories>
<build>
- <directory>target</directory>
- <outputDirectory>target/classes</outputDirectory>
+ <directory>${project.basedir}/target</directory>
+ <outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
- <testOutputDirectory>target/test-classes</testOutputDirectory>
- <sourceDirectory>src/main/java</sourceDirectory>
- <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
- <testSourceDirectory>src/test/java</testSourceDirectory>
+ <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
+ <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
+ <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
+ <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
- <directory>src/main/resources</directory>
+ <directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
- <directory>src/test/resources</directory>
+ <directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
<pluginManagement>
@@ -150,7 +150,7 @@
</build>
<reporting>
- <outputDirectory>target/site</outputDirectory>
+ <outputDirectory>${project.build.directory}/site</outputDirectory>
</reporting>
</project>
<!-- END SNIPPET: superpom -->
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=671936&r1=671935&r2=671936&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 Thu Jun 26 09:34:27 2008
@@ -26,11 +26,12 @@
import org.apache.maven.model.Organization;
import org.apache.maven.model.Repository;
import org.apache.maven.model.Scm;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.ProjectBuilderConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -45,6 +46,7 @@
{
private Map context;
+ @Override
protected void setUp()
throws Exception
{
@@ -66,15 +68,15 @@
dm.setRepository( repo );
model.setDistributionManagement( dm );
- Map context = new HashMap();
String path = "path/to/project";
File basedir = new File( path ).getAbsoluteFile();
+ ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
+
Model out = new RegexBasedModelInterpolator().interpolate( model,
- context,
- Collections.EMPTY_MAP,
basedir,
+ config,
false );
assertEquals( "http://localhost/" + basedir.getAbsolutePath() + "/target/test-repo",