Index: src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java	(revision 360389)
+++ src/main/java/org/apache/maven/plugin/antrun/AbstractAntMojo.java	(working copy)
@@ -25,12 +25,14 @@
 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 @@
     {
         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 );
Index: src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java
===================================================================
--- src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java	(revision 360389)
+++ src/main/java/org/apache/maven/plugin/antrun/AntPropertyHelper.java	(working copy)
@@ -17,9 +17,9 @@
  */
 
 import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
 import org.apache.tools.ant.PropertyHelper;
-import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 
 /**
  * Makes the ${expressions} used in Maven available to Ant as properties.
@@ -30,53 +30,44 @@
     extends PropertyHelper
 {
     private Log log;
-    private MavenProject mavenProject;
+    private ExpressionEvaluator exprEvaluator;
 
-    public AntPropertyHelper( MavenProject project, Log l )
+    public AntPropertyHelper( ExpressionEvaluator exprEvaluator, Log l )
     {
-        mavenProject = project;
-        log = l;
+        this.exprEvaluator = exprEvaluator;
+        this.log = l;
     }
 
     public synchronized Object getPropertyHook( String ns, String name,
         boolean user
     )
     {
-        log.debug( "getProperty(ns="+ns+", name="+name+", user="+user+")" );
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( "getProperty(ns="+ns+", name="+name+", user="+user+")" );
+        }
 
         Object val = null;
-        try
+        try 
         {
-            if ( name.startsWith( "project." ) )
+            val = exprEvaluator.evaluate("${" + name + "}");
+        } catch (ExpressionEvaluationException e) 
+        {
+            if ( log.isErrorEnabled() )
             {
-                val = ReflectionValueExtractor.evaluate(
-                    name,
-                    mavenProject,
-                    true
-                );
+                log.error("Failed to evaluate expression" , e);
             }
-            else if ( name.equals("basedir") )
-            {
-                val = ReflectionValueExtractor.evaluate(
-                    "basedir.path",
-                    mavenProject,
-                    false
-                );
-            }
         }
-        catch ( Exception e )
+        if ( val != null )
         {
-            log.warn( "Error evaluating expression '" + name + "'", e );
-            e.printStackTrace();
+            return val;
         }
 
+        val = super.getPropertyHook( ns, name, user );
+
         if ( val == null )
         {
-            val = super.getPropertyHook( ns, name, user );
-            if ( val == null )
-            {
-                val = System.getProperty( name.toString() );
-            }
+            val = System.getProperty( name.toString() );
         }
 
         return val;
Index: src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java
===================================================================
--- src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java	(revision 360389)
+++ src/main/java/org/apache/maven/plugin/antrun/components/AntTargetConverter.java	(working copy)
@@ -27,7 +27,6 @@
 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 @@
 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 @@
         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 @@
                 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 @@
                 parentWrapper.addChild( wrapper );
             }
 
-            processConfiguration( wrapper, project, target, childConfiguration, expressionEvaluator );
+            processConfiguration( wrapper, project, target, childConfiguration );
         }
     }
 
