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 [EMAIL PROTECTED] ModelInterpolator#interpolate(Model,
File, ProjectBuilderConfiguration, boolean)} instead.
+ */
+ @Deprecated
Model interpolate( Model project,
- Map context )
+ Map<String, ?> context )
throws ModelInterpolationException;
+ /**
+ * @deprecated Use [EMAIL PROTECTED] 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",