another option is to nest any neccesary tasks inside the taskdef:

<project default="codegen" basedir=".">

    <taskdef name="xslt" classname="Xslt" classpath="lib">
        <javac srcdir="lib" destdir="lib" />
    </taskdef>

    <target name="codegen" depends="">
        <xslt infile="${Courier.xml}"
            xsltfile="${fontfile.xsl}"
            outfile="${build.src}/fonts/Courier.java"
            smart="yes" />
    </target>

But I think I prefer the following, since it allows multiple tasks to
depend on a single compile:

<project default="codegen" basedir=".">

    <taskdef name="xslt" classname="Xslt" classpath="lib" depends
="xslt-compile"/>

    <target name="xslt-compile">
        <javac srcdir="lib" destdir="lib" />
    </taskdef>

    <target name="codegen" depends="">
        <xslt infile="${Courier.xml}"
            xsltfile="${fontfile.xsl}"
            outfile="${build.src}/fonts/Courier.java"
            smart="yes" />
    </target>

Matt Foemmel
ThoughtWorks, Inc.


                                                                                
                                                                   
                    James Duncan                                                
                                                                   
                    Davidson                  To:     <[EMAIL PROTECTED]>       
                                                          
                    <[EMAIL PROTECTED]        cc:                               
                                                                   
                    g.sun.com>                Subject:     Re: [RFE] Richer 
Task Specification                                                     
                                                                                
                                                                   
                    06/22/00 12:43 PM                                           
                                                                   
                    Please respond to                                           
                                                                   
                    ant-dev                                                     
                                                                   
                                                                                
                                                                   
                                                                                
                                                                   




on 2000/06/21 16:38, [EMAIL PROTECTED] at [EMAIL PROTECTED] wrote:


> Note: I am no longer in favor of this approach.  I prefer Stefan's:
>
> <project default="codegen" basedir=".">
>
> <target name="codegen" depends="">
>
> <javac srcdir="lib" destdir="lib" />
> <taskdef name="xslt" classname="Xslt" />
>
> <xslt infile="${Courier.xml}"
> xsltfile="${fontfile.xsl}"
> outfile="${build.src}/fonts/Courier.java"
> smart="yes" />
>
> </target>
>
> </project>

I think I like this more than I like the static inclusion of tasks. Mainly
as this is ordered and the inclusion of tasks to taskdefs isn't really.

I assume that this taskdef is local to the task since it's a child of task?

It might be useful to add a classpath attribute to taskdef to specify a
relative path to the place to pick the class up from. (create a classloader
and use it)

I am still a bit concerned that taskdefs are allowable at both the project
level and the task level, but don't have a better idea at the moment, so
I'm
ok with this.

.duncan




Reply via email to