ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dona...@apache.org
Subject cvs commit: jakarta-ant/proposal/myrmidon/src/xdocs task.xml
Date Sun, 03 Mar 2002 06:45:42 GMT
donaldp     02/03/02 22:45:42

  Added:       proposal/myrmidon/src/xdocs task.xml
  Log:
  Converted the Ant1 Howto write a task to ant2
  
  Revision  Changes    Path
  1.1                  jakarta-ant/proposal/myrmidon/src/xdocs/task.xml
  
  Index: task.xml
  ===================================================================
  <document>
  
  <properties>
  <author email="peter@apache.org">Peter Donald</author>
  <title>Writing a task</title>
  </properties>
  
  <body>
  
  <section name="Writing a Task">
  
  <p>In ant1 it was very easy to write your own task. In Ant2 we plan 
  to make it even easier. To write a basic task simply follow the following
  formula.</p>
  
  <ol>
    <li>
      Create a Java class that extends 
      <code>org.apache.myrmidon.api.AbstractTask</code>
    </li>
    <li>
      For each attribute, write a setter method. The setter method 
      must be a public void method that takes a single argument. The name 
      of the method must begin with "set", followed by the attribute name, with 
      the first character of the name in uppercase, and the rest in lowercase. 
      The type of the attribute can be:
      <ul>
        <li>String</li>
        <li>
          Any primitive type - they are converted for you from their 
          String-representation in the buildfile
        </li>
        <li>
          File - the string representation will be interpreted relative to 
          the project's basedir.
        </li>
      </ul>
    </li>
    <li>
      For each nested element create a public void method that takes a single 
      argument. The name of the method must begin with "add", followed by the 
      attribute name, with the first character of the name in uppercase, and 
      the rest in lowercase. The type of the parameter is an object with a 
      no-arguement constructor. It is configured in exactly the same was a 
      task is configured (via setters and adders) and then added to the task.
    </li>
    <li>
      Write a public void method named "execute" with no arguments that 
      throws a TaskException. This is the method called to do the 
      actual work of the task.
    </li>
  </ol>
  
  <subsection name="A Basic Example">
  
  <p>So a basic task that has one attribute named "message" and just prints 
  out this message is as simple as;</p>
  
  <source>
  package org.realityforge.tasks;
  
  import org.apache.myrmidon.api.AbstractTask;
  import org.apache.myrmidon.api.TaskException;
  
  public class SystemOutPrinterTask 
      extends Task 
  {
      private String m_message;
  
      // The setter for the "message" attribute
      public void setMessage( final String message )
      {
          m_message = message;
      }
  
      // The method executing the task
      public void execute() 
          throws TaskException 
      {
          System.out.println( m_message );
      }
  }
  </source>
  
  <p>To use this task you <em>could</em> create a library but instead we
will 
  just use &lt;taskdef&gt; to define the task. An example usage would be;</p>
  
  <source>
  <![CDATA[
  
  <?xml version="1.0"?>
  
  <project version="2.0">
  
    <target name="main">
      <taskdef name="printer" 
               classname="org.realityforge.tasks.SystemOutPrinterTask"
               classpath="build/classes"/>
  
      <printer message="Hello World!"/>
    </target>
  </project>
  ]]>
  
  </source>
  
  </subsection>
  
  </section>
  </body>
  
  </document>
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message