You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2017/12/20 09:27:34 UTC
[maven-antrun-plugin] 25/26: Try to get properties through a
expression evaluator first,
delegating to ant after. PR: MANTRUN-36 Submitted By: Gilles Scokart
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to annotated tag maven-antrun-plugin-1.1
in repository https://gitbox.apache.org/repos/asf/maven-antrun-plugin.git
commit af7725d9fae280f8a3c4f3dca2afa0284ed4aced
Author: Carlos Sanchez Gonzalez <ca...@apache.org>
AuthorDate: Sun Jan 1 20:31:00 2006 +0000
Try to get properties through a expression evaluator first, delegating to ant after.
PR: MANTRUN-36
Submitted By: Gilles Scokart
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-antrun-plugin@360548 13f79535-47bb-0310-9956-ffa450edef68
---
.../maven/plugin/antrun/AbstractAntMojo.java | 7 ++-
.../maven/plugin/antrun/AntPropertyHelper.java | 57 ++++++++++++++++++++++
.../antrun/components/AntTargetConverter.java | 23 +++------
3 files changed, 70 insertions(+), 17 deletions(-)
diff --git a/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java b/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
index 9efd3e9..5aaeef1 100644
--- a/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
+++ b/src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
@@ -25,12 +25,14 @@ import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.antrun.components.AntTargetConverter;
import org.apache.maven.project.MavenProject;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.PropertyHelper;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.types.Path;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -54,11 +56,14 @@ public abstract class AbstractAntMojo
{
try
{
+ //TODO refactor - place the manipulation of the expressionEvaluator into a separated class.
+ ExpressionEvaluator exprEvaluator = (ExpressionEvaluator) antTasks.getProject().getReference(AntTargetConverter.MAVEN_EXPRESSION_EVALUATOR_ID);
+
Project antProject = antTasks.getProject();
PropertyHelper propertyHelper = PropertyHelper.getPropertyHelper( antProject );
- propertyHelper.setNext( new AntPropertyHelper( mavenProject, getLog() ) );
+ propertyHelper.setNext( new AntPropertyHelper( exprEvaluator, getLog() ) );
DefaultLogger antLogger = new DefaultLogger();
antLogger.setOutputPrintStream( System.out );
diff --git a/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java b/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
index b76ae41..00f098e 100644
--- a/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
+++ b/src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
@@ -19,6 +19,8 @@ package org.apache.maven.plugin.antrun;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.apache.tools.ant.PropertyHelper;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
/**
@@ -30,14 +32,27 @@ public class AntPropertyHelper
extends PropertyHelper
{
private Log log;
+ private ExpressionEvaluator exprEvaluator;
private MavenProject mavenProject;
+ /**
+ * @deprecated use the other constructor
+ * @param project
+ * @param l
+ */
public AntPropertyHelper( MavenProject project, Log l )
{
mavenProject = project;
log = l;
}
+ public AntPropertyHelper( ExpressionEvaluator exprEvaluator, Log l )
+ {
+ this.mavenProject = null;
+ this.exprEvaluator = exprEvaluator;
+ this.log = l;
+ }
+
public synchronized Object getPropertyHook( String ns, String name, boolean user )
{
if ( log.isDebugEnabled() )
@@ -45,6 +60,47 @@ public class AntPropertyHelper
log.debug( "getProperty(ns="+ns+", name="+name+", user="+user+")" );
}
+ /* keep old behaviour */
+ if ( mavenProject != null )
+ {
+ return getPropertyHook( ns, name, user, mavenProject );
+ }
+
+ Object val = null;
+ try
+ {
+ val = exprEvaluator.evaluate( "${" + name + "}" );
+ }
+ catch (ExpressionEvaluationException e)
+ {
+ if ( log.isErrorEnabled() )
+ {
+ log.error("Failed to evaluate expression" , e);
+ }
+ }
+ if ( val == null )
+ {
+ val = super.getPropertyHook( ns, name, user );
+
+ if ( val == null )
+ {
+ val = System.getProperty( name.toString() );
+ }
+ }
+
+ return val;
+ }
+
+ /**
+ * @deprecated added to keep backwards compatibility
+ * @param ns
+ * @param name
+ * @param user
+ * @param mavenProject
+ * @return
+ */
+ private Object getPropertyHook( String ns, String name, boolean user, MavenProject mavenProject )
+ {
Object val = null;
try
{
@@ -85,4 +141,5 @@ public class AntPropertyHelper
return val;
}
+
}
diff --git a/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java b/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java
index a0ce274..a17e219 100644
--- a/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java
+++ b/src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java
@@ -27,7 +27,6 @@ import org.codehaus.plexus.component.configurator.ConfigurationListener;
import org.codehaus.plexus.component.configurator.converters.AbstractConfigurationConverter;
import org.codehaus.plexus.component.configurator.converters.ConfigurationConverter;
import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
@@ -40,6 +39,8 @@ import org.codehaus.plexus.configuration.PlexusConfigurationException;
public class AntTargetConverter
extends AbstractConfigurationConverter
{
+ public static final String MAVEN_EXPRESSION_EVALUATOR_ID = "maven.expressionEvaluator";
+
public static final String ROLE = ConfigurationConverter.class.getName();
public boolean canConvert( Class type )
@@ -79,14 +80,16 @@ public class AntTargetConverter
target.setProject( project );
project.addTarget( target );
+ project.addReference(MAVEN_EXPRESSION_EVALUATOR_ID , expressionEvaluator);
+
initDefinitions( project, target );
- processConfiguration( null, project, target, configuration, expressionEvaluator );
+ processConfiguration( null, project, target, configuration );
}
private void processConfiguration( RuntimeConfigurable parentWrapper, Project project, Target target,
- PlexusConfiguration configuration, ExpressionEvaluator expressionEvaluator )
+ PlexusConfiguration configuration )
throws ComponentConfigurationException
{
int items = configuration.getChildCount();
@@ -136,18 +139,6 @@ public class AntTargetConverter
try
{
String v = childConfiguration.getAttribute( attrNames[a] );
-
- try
- {
- Object evaluatedExpr = expressionEvaluator.evaluate( v );
- v = evaluatedExpr == null ? v : evaluatedExpr.toString();
- }
- catch ( ExpressionEvaluationException e )
- {
- throw new ComponentConfigurationException( "Error evaluating value '" + v + "' of attribute '" +
- attrNames[a] + "' of tag '" + childConfiguration.getName() + "'", e );
- }
-
wrapper.setAttribute( attrNames[a], v );
}
catch ( PlexusConfigurationException e )
@@ -163,7 +154,7 @@ public class AntTargetConverter
parentWrapper.addChild( wrapper );
}
- processConfiguration( wrapper, project, target, childConfiguration, expressionEvaluator );
+ processConfiguration( wrapper, project, target, childConfiguration );
}
}
--
To stop receiving notification emails like this one, please contact
"commits@maven.apache.org" <co...@maven.apache.org>.