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>.