ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Reilly" <peter.kitt.rei...@gmail.com>
Subject Re: Attempting to write a custom import-task
Date Fri, 08 Sep 2006 15:05:17 GMT
You have got to set the location and the target attributes of
the import task, in ant 1.7 there is a utility method bindToTask
to do this.
  <script language="beanshell">
    task = project.createTask("import");
    task.bindToOwner(self);
    task.setFile("import.me.xml");
    task.execute();
  </script>

However, you are using beanshell, so an easier method would be
to extend the import class itself:

  <script language="beanshell">
    import org.apache.tools.ant.taskdefs.ImportTask;
    public class MyImportTask extends ImportTask {
       private String me;
       public void setMe(String me) {
          this.me = me;
       }
       public void execute() {
          setFile(me);
          super.execute();
       }
    }
    project.addTaskDefinition("my.import", MyImportTask.class);
  </script>

  <my.import me="import.me.xml"/>


Peter

On 9/8/06, Marcus Lindblom <macke@yar.nu> wrote:
>
> (I couldn't find anything in the mail-archives, nor on google, on this,
> so I'm asking here. It's my first post to this list and I haven't
> subscribed it previously either.)
>
> Hi all,
>
> Short version: How to use <import> from a <scriptdef> custom task?
>
> Long version:
>
> I'm trying to make a custom import task that performs some path-finding
> & caching to locate other build-files, in a dependency-system that we've
> developed on top of ant with the help of a set of beanshell-description.
> (It allows various modules to refer to each others by name only, not via
> paths. ). It works quite nice and Ant is really awesome, etc etc. :-)
>
> Until now, we've used <import file="${ModuleName.ant.build}"/> to import
> dependencies, which is run after importing our system-root-build.xml
> which runs a script that sets all these properties. However, if that
> module does not exists (not being checked out, misspelled, diretory
> moved) there is no good way to report for an error or rather, to rescan
> the directories for it (it should at least try that once per build.) So,
> I thought of making my own import (call it mod-import) that takes a
> 'module' attribute and checks if the property is set, the build-file
> exists, etc etc, before actually importing the file stored in the
> property.
>
> But I run in to problem with calling ant's import, as it is set to only
> be a top-level task, so calling project.create("import") from my
> custom-import task fails. Is there any way around that, or are there
> technical reasons for it to be so (rather than user-control issues)?
>
> If my custom task could be defined to be a top-level task, which it is
> and should be checked to be, then it should be able to access other
> top-level tasks as well, no? (I don't know much about ant internals, so
> I may be going in the wrong direction here.)
>
> All help warmly welcomed.
>
> Cheers,
> /Marcus
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message