From 6309813d01620379a35da64c12c4de488efedc2d Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sun, 3 Mar 2002 06:45:42 +0000 Subject: [PATCH] Converted the Ant1 Howto write a task to ant2 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271697 13f79535-47bb-0310-9956-ffa450edef68 --- proposal/myrmidon/src/xdocs/task.xml | 112 +++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 proposal/myrmidon/src/xdocs/task.xml 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;

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