diff --git a/proposal/myrmidon/src/xdocs/task.xml b/proposal/myrmidon/src/xdocs/task.xml new file mode 100644 index 000000000..668ed79c5 --- /dev/null +++ b/proposal/myrmidon/src/xdocs/task.xml @@ -0,0 +1,112 @@ + + + +Peter Donald +Writing a task + + + + +
+ +

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.

+ +
    +
  1. + Create a Java class that extends + org.apache.myrmidon.api.AbstractTask +
  2. +
  3. + 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: +
      +
    • String
    • +
    • + Any primitive type - they are converted for you from their + String-representation in the buildfile +
    • +
    • + File - the string representation will be interpreted relative to + the project's basedir. +
    • +
    +
  4. +
  5. + 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. +
  6. +
  7. + 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. +
  8. +
+ + + +

So a basic task that has one attribute named "message" and just prints +out this message is as simple as;

+ + +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 ); + } +} + + +

To use this task you could create a library but instead we will +just use <taskdef> to define the task. An example usage would be;

+ + + + + + + + + + + + +]]> + + + +
+ +
+ + +