ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Reilly <peter.rei...@corvil.com>
Subject Re: Article: Use Jython to Write Ant Tasks
Date Tue, 27 Apr 2004 11:45:24 GMT
Scripttypedef is a task that may be in ant 1.7.
It is like <scriptdef> except that it uses reflection
on a class provided by a BSH script to find the attributes
and nested elements. It may also be used to make
Conditions, Filters , FilenameMappers and Selectors.

<scriptyypedef name="bytwo" language="beanshell">
import org.apache.tools.ant.Task;
public class ByTwo extends Task {
   private int value = 1;
   public void setValue(int value) {
      this.value = value;
   }
   public void execute() {
      log("bytwo is " + (value * 2));
   }
}
</scripttypedef>
<bytwo value="4"/>

<scriptyypedef name="bythree" language="groovy">
import org.apache.tools.ant.Task
public class ByThree extends Task {
   int value = 1
   public void execute() {
      log("bythree is " + (value * 3))
   }
}
ByThree
</scripttypedef>
<bythree value="5"/>

Peter

Ed Taekema wrote:

> Not sure what you need to do to support scripttypedef ... but you can 
> access the project as the following code demonstrates:
>
> def startSession(self):
>
>         project = Task.getProject(self)
>         project.setProperty("SESSION_ADDR", "XXXX");
>
> Does the  task need to "self register"? or does it register as part of 
> its constructor?
>
> Ed
>
>
> \At 03:50 AM 4/26/2004, Peter Reilly wrote:
>
>> Hi Ed,
>> This is a interresting article - I did not know about the """@sig " 
>> trick.
>>
>> I tried to do the following using ant's script task:
>>
>> from org.apache.tools.ant import Task
>>
>> class SimpleTask(Task):
>>
>>  message = ""
>>
>>  def execute(self):
>>     """@sig public void execute()"""
>>     Task.log(self, "Message: " + self.message)
>>
>>  def setMessage(this, aMessage):
>>     """@sig public void setMessage(java.lang.String str)"""
>>     this.message = aMessage
>>
>> project.addTaskDefinition("s", SimpleTask)
>>
>> But when the task is used, I get:
>> ImportError: no module named main
>>
>> This is a pity as it would be nice to add jython to the
>> languages supported by <scripttypedef>.
>>
>>
>> The groovy example would be more  groovly  written:
>>
>> import org.apache.tools.ant.Task
>> public class GroovySimpleTask extends Task {
>>  String message = ""
>>  public void execute() {
>>    log(message)
>>  }
>> }
>>
>> project.addTaskDefinition("s", GroovySimpleTask)
>>
>>
>> Peter
>>
>>
>> Ed Taekema wrote:
>>
>>> I've written a guide to writing Ant tasks using Jython:  how to add 
>>> scripted behaviour
>>> to ant builds. It details the steps to write a custom Ant task in 
>>> jython, compile
>>> it and install it into ant so it can be used as any other task in an 
>>> ant build. The article also takes a quick look at an alternate 
>>> implementation using Groovy.
>>>
>>> And ... here is the url:  
>>> http://www.pycs.net/users/0000177/stories/11.html .
>>>
>>> Enjoy,
>>>
>>> Ed Taekema
>>> Toronto, Canada
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message