<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ant.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ant.core" id="antTasks" name="Ant Tasks"/>
      </appInfo>
      <documentation>
         Allows plug-ins to define arbitrary Ant tasks for use 
by the Ant infrastructure.  The standard Ant infrastructure 
allows for the addition of arbitrary tasks.  
Unfortunately, it is unlikely that the Ant Core plug-in 
would have the classes required by these tasks on its 
classpath (or that of any of its prerequisites).  
To address this, clients should define an extension 
which plugs into this extension-point and maps a 
task name onto a class.  The Ant plug-in can then 
request that the declaring plug-in load the specified class.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="antTask" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified identifier of the target extension point
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  an optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name of the extension instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="antTask">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  name of the task to be defined
               </documentation>
            </annotation>
         </attribute>
         <attribute name="uri" type="string">
            <annotation>
               <documentation>
                  The uri that this definition should live in. Only used if using Ant newer than 1.6.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  the fully qualified name of a Java class implementing 
the task.  Generally this class must be a subclass of
&lt;code&gt;org.apache.tools.ant.Task&lt;/code&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.apache.tools.ant.Task"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="library" type="string" use="required">
            <annotation>
               <documentation>
                  a path relative to the plug-in install location
for the library containing the task.
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="headless" type="boolean">
            <annotation>
               <documentation>
                  indicates whether this task is suitable for use in a &quot;headless&quot; Ant environment. If running headless and the attribute is &quot;false&quot;, 
                  the task will not be loaded or defined. As well, the plugin class loader will not be added as a parent classloader to the Ant classloader.
                  The implied value is true, when not specified.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="eclipseRuntime" type="boolean">
            <annotation>
               <documentation>
                  indicates whether this task requires an Eclipse runtime (i.e. must be run in the same VM as Eclipse). The implied value is true, when not specified.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>


   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of an Ant tasks extension point: 
&lt;p&gt;
&lt;pre&gt;
   &lt;extension point=&quot;org.eclipse.ant.core.antTasks&quot;&gt;
      &lt;antTask name=&quot;coolTask&quot; class=&quot;com.example.CoolTask&quot; library=&quot;lib/antSupport.jar&quot;/&gt;
   &lt;/extension&gt; 
&lt;/pre&gt;
&lt;/p&gt;
In the above example the &lt;code&gt;antSupport.jar&lt;/code&gt; must be created using an Ant project builder. For more information about creating project builders and how they work, please refer to the following help topics: &lt;b&gt;Contributing tasks and types&lt;/b&gt;, &lt;b&gt;Ant buildfiles as project builders&lt;/b&gt; and &lt;b&gt;Creating a project builder Ant buildfile&lt;/b&gt;
      </documentation>
   </annotation>


   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         The platform itself supplies a number of tasks including 
eclipse.incrementalBuild and eclipse.refreshLocal.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2000, 2011 IBM Corporation and others.&lt;br&gt;

This program and the accompanying materials are made 
available under the terms of the Eclipse Public License 2.0 which 
accompanies this distribution, and is available at 
&lt;a href=&quot;https://www.eclipse.org/legal/epl-2.0&quot;&gt;https://www.eclipse.org/legal/epl-v20.html&lt;/a&gt;/

SPDX-License-Identifier: EPL-2.0
      </documentation>
   </annotation>

</schema>
