Index: classes/phing/Phing.php
===================================================================
--- classes/phing/Phing.php	(revision 773)
+++ classes/phing/Phing.php	(working copy)
@@ -536,6 +536,16 @@
             $this->targets[] = $project->getDefaultTarget();
         }
 
+        // make sure that minimum required phing version is satisfied
+        try {
+            $this->comparePhingVersion($project->getPhingVersion()); 
+        } catch(Exception $exc) {
+            $project->fireBuildFinished($exc);
+            restore_error_handler();
+            self::unsetCurrentProject();
+            throw $exc;
+        }
+
         // execute targets if help param was not given
         if (!$this->projectHelp) {
 
@@ -570,6 +580,21 @@
         self::unsetCurrentProject();
     }
 
+    private function comparePhingVersion($version) {
+        $current = strtolower(self::getPhingVersion());
+        $current = trim(str_replace('phing', '', $current)); 
+
+        // make sure that version checks are not applied to trunk
+        if('dev' === $current) {
+            return 1;
+        }
+
+        if(-1 == version_compare($current, $version)) {
+            throw new BuildException(
+                sprintf('Incompatible Phing version (%s). Version "%s" required.', $current, $version));
+        }
+    }
+
     /**
      * Bind any registered build listeners to this project.
      *
Index: classes/phing/Project.php
===================================================================
--- classes/phing/Project.php	(revision 773)
+++ classes/phing/Project.php	(working copy)
@@ -98,6 +98,9 @@
     /** project description */
     private $description;
 
+    /** require phing version */
+    private $phingVersion;
+
     /** a FileUtils object */
     private $fileUtils;
     
@@ -440,6 +443,20 @@
         return $this->description;
     }
 
+    /** Set the minimum required phing version **/
+    function setPhingVersion($version) {
+        $version = str_replace('phing', '', strtolower($version));
+        $this->phingVersion = (string)trim($version);
+    }
+
+    /** Get the minimum required phing version **/
+    function getPhingVersion() {
+        if($this->phingVersion === null) {
+            $this->setPhingVersion(Phing::getPhingVersion());
+        }
+        return $this->phingVersion;
+    }
+
     /** Set basedir object from xml*/
     function setBasedir($dir) {
         if ($dir instanceof PhingFile) {
Index: classes/phing/parser/ProjectHandler.php
===================================================================
--- classes/phing/parser/ProjectHandler.php	(revision 773)
+++ classes/phing/parser/ProjectHandler.php	(working copy)
@@ -69,6 +69,7 @@
         $id    = null;
         $desc = null;
         $baseDir = null;
+        $ver = null;
 
         // some shorthands
         $project = $this->configurator->project;
@@ -85,6 +86,8 @@
                 $baseDir = $value;
             } elseif ($key === "description") {
                 $desc = $value;
+            } elseif ($key === "phingVersion") {
+                $ver = $value;
             } else {
                 throw new ExpatParseException("Unexpected attribute '$key'");
             }
@@ -118,6 +121,10 @@
             $project->setDescription($desc);
           }        
 
+          if($ver !== null) {
+              $project->setPhingVersion($ver);
+          }
+
           if ($project->getProperty("project.basedir") !== null) {
             $project->setBasedir($project->getProperty("project.basedir"));
           } else {

