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 and <typedef> your class and use the new type as a nested element of this task—see the example below.


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


<antstructure output="project.dtd"/>

Emitting your own structure instead of a DTD

First you need to implement the interface

package org.example;
public class MyPrinter implements AntStructure.StructurePrinter {

and then use it via typedef

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

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