AntStructure

Description

Generates an DTD for Apache Ant buildfiles which contains information about all tasks currently known to Ant.

Actually the DTD will not be a real DTD for buildfiles since Ant's usage of XML cannot be captured with a DTD. Several elements in Ant can have different attribute lists depending on the element that contains them. <fail> for example can be a task or a nested child element of the <sound> task. Don't consider the generated DTD something to rely upon.

Also note that the DTD generated by this task is incomplete, you can always add XML entities using <taskdef> or <typedef>. See here for a way to get around this problem.

This task doesn't know about required attributes, all will be listed as #IMPLIED.

Since Ant 1.7 custom structure printers can be used instead of the one that emits a DTD. In order to plug in your own structure, you have to implement the interface org.apache.tools.ant.taskdefs.AntStructure.StructurePrinter and <typedef> your class and use the new type as a nested element of this task—see the example below.

Parameters

Attribute Description Required
output file to write the DTD to. Yes

Examples

Basic usage

<antstructure output="project.dtd"/>

Emit your own structure instead of a DTD: first you need to implement the interface

package org.example;
import org.apache.tools.ant.taskdefs.AntStructure;
public class MyPrinter implements AntStructure.StructurePrinter {
    ...
}

and then use it via typedef

<typedef name="myprinter" classname="org.example.MyPrinter"/>
<antstructure output="project.my">
  <myprinter/>
</antstructure>

Your own StructurePrinter can accept attributes and nested elements just like any other Ant type or task.