Deprecation: the javadoc2
task simply points to the javadoc
task and it's there for backwards compatibility reasons. Since this task will be removed in future
versions, you are strongly encouraged to use javadoc instead.
Generates code documentation using the javadoc tool.
The source directory will be recursively scanned for Java source files to process but only those matching the inclusion rules, and not matching the exclusions rules will be passed to the javadoc tool. This allows wildcards to be used to choose between package names, reducing verbosity and management costs over time. This task, however, has no notion of "changed" files, unlike the javac task. This means all packages will be processed each time this task is run. In general, however, this task is used much less frequently.
Note: since javadoc
calls System.exit()
, javadoc cannot be run inside the same
JVM as Apache Ant without breaking functionality. For this reason, this task always forks JVM. This
overhead is not significant since javadoc is normally a heavy application and will be
called infrequently.
Note: the packagelist attribute allows you to specify the list of
packages to document outside of the Ant file. It's a much better practice to include everything
inside the build.xml
file. This option was added in order to make it easier to migrate
from regular makefiles, where you would use this option of javadoc. The packages
listed in packagelist are not checked, so the task performs even if some packages are
missing or broken. Use this option if you wish to convert from an existing makefile. Once things are
running you should then switch to the regular notation.
Note: When generating the JavaDocs for classes which contains annotations you
maybe get a java.lang.ClassCastException:
com.sun.tools.javadoc.ClassDocImpl
. This is
due bug 6442982. The
cause is that javadoc cannot find the implementations of used annotations. The
workaround is providing the jars with these implementations (like
JAXBs @XmlType
, ...) to <javadoc>
using classpath, classpathref attributes or
nested <classpath>
element.
Note: many problems with running javadoc stem from command lines
that have become too long—even though the error message doesn't give the slightest hint this
may be the problem. If you encounter problems with the task, try to set
the useexternalfile attribute to true
first.
If you use multiple ways to specify where javadoc should be looking for sources, your
result will be the union of all specified documentations. If you, e.g., specify
a sourcepath attribute and also a nested packageset
both pointing at the
same directory your excludepackagenames attribute won't have any effect unless it agrees
with the exclude patterns of the packageset
(and vice versa).
Attribute | Description | Required |
---|---|---|
sourcepath | Specify where to find source files | At least one of the four or
nested <sourcepath> , <fileset> ,
module or <packageset> |
sourcepathref | Specify where to find source files by reference to a sourcepath defined elsewhere. | |
sourcefiles | Comma separated list of source files—see also the nested source
element. |
|
modulenames | Comma separated list of module names -- see also
the nested module element. since Ant 1.10.6 |
|
destdir | Destination directory for output files | Yes, unless a doclet has been specified. |
maxmemory | Max amount of memory to allocate to the javadoc JVM | No |
packagenames | Comma separated list of package files (with terminating wildcard)—see also the
nested package element. |
No |
packageList | The name of a file containing the packages to process | No |
classpath | Specify where to find user class files | No |
Bootclasspath | Override location of class files loaded by the bootstrap class loader | No |
classpathref | Specify where to find user class files by reference to a classpath defined elsewhere. | No |
bootclasspathref | Override location of class files loaded by the bootstrap class loader by reference to a bootclasspath defined elsewhere. | No |
Extdirs | Override location of installed extensions | No |
Overview | Read overview documentation from HTML file | No |
access | Access mode: one of public, protected, package, or private |
No; default is protected |
Public | Show only public classes and members | No |
Protected | Show protected/public classes and members (default) | No |
Package | Show package/protected/public classes and members | No |
Private | Show all classes and members | No |
Old | Generate output using JDK 1.1 emulating doclet. Note: This attribute has no effect unless you're using an pre jdk 1.4 external javadoc |
No |
Verbose | Output messages about what javadoc is doing | No |
Locale | Locale to be used, e.g. en_USor en_US_WIN |
No |
Encoding | Source file encoding name | No |
Version | Include @version paragraphs |
No |
Use | Create class and package usage pages | No |
Author | Include @author paragraphs |
No |
Splitindex | Split index into one file per letter | No |
Windowtitle | Browser window title for the documentation (text) | No |
Doctitle | Include title for the package index (first) page (HTML code) | No |
Header | Include header text for each page (HTML code) | No |
Footer | Include footer text for each page (HTML code) | No |
bottom | Include bottom text for each page (HTML code) | No |
link | Create links to javadoc output at the given URL—see also the
nested link element. |
No |
linkoffline | Link to docs at url using package list
at alt-url by specifying a
value url alt-url(space as separator). A shorthand for the nested link element with offline=true. |
No |
group | Group specified packages together in overview page. The format is as
described below—see also the nested group
element. |
No |
nodeprecated | Do not include @deprecated information |
No |
nodeprecatedlist | Do not generate deprecated list | No |
notree | Do not generate class hierarchy | No |
noindex | Do not generate index | No |
nohelp | Do not generate help link | No |
nonavbar | Do not generate navigation bar | No |
serialwarn | Generate warning about @serial tag |
No |
helpfile | Specifies the HTML help file to use | No |
stylesheetfile | Specifies the CSS stylesheet to use | No |
charset | Charset for cross-platform viewing of generated documentation | No |
docencoding | Output file encoding name | No |
doclet | Specifies the class file that starts the doclet used in generating the
documentation—see also the nested doclet element. |
No |
docletpath | Specifies the path to the doclet class file that is specified with the -doclet option. | No |
docletpathref | Specifies the path to the doclet class file that is specified with the -doclet option by reference to a path defined elsewhere. | No |
additionalparam | Lets you add additional parameters to the javadoc command line. Useful for
doclets. Parameters containing spaces need to be quoted using "—see also the
nested arg element. |
No |
failonerror | Stop the build process if the command exits with a return code other than 0. |
No |
failonwarning | Stop the build process if a warning is emitted—i.e. if javadoc's output
contains the word warning. since Ant 1.9.4 |
No |
excludepackagenames | comma separated list of packages you don't want docs for—see also the
nested excludepackage element. |
No |
defaultexcludes | indicates whether default excludes should be used (yes|no). |
No; defaults to yes |
useexternalfile | indicates whether the source file names specified in srcfiles or as
nested source elements should be written to a temporary file to make the command
line shorter. Also applies to the package names specified via the packagenames
attribute or nested package elements. Since Ant 1.7.0, also applies to
all the other command line options. (yes|no). If enabled, the file will be written to the temporary directory. |
No; default is no |
source | Enable javadoc to handle Java language features. Set this to 1.4to document code that compiles using javac -source 1.4, etc. |
No; default can be provided using the magic
ant.build.javac.source property. |
linksource | Generate hyperlinks to source files. since Ant 1.6. (yes|no). |
No; default is no |
breakiterator | Use the new break iterator algorithm. since Ant 1.6. (yes|no). |
No; default is no |
noqualifier | Enables the -noqualifier argument—must be allor a colon separated list of packages. since Ant 1.6. |
No |
includenosourcepackages | If set to true, packages that don't contain Java source but a package.html will get documented as well. since Ant 1.6.3. |
No; default is false |
executable | Specify a particular javadoc executable to use in place of the default binary (found in the same JDK as Ant is running in). since Ant 1.6.3. Note: It is up to you to ensure that this command supports the attributes you wish to use. | No |
docfilessubdirs | Enables deep-copying of doc-files subdirectories. since Ant 1.8.0. | No; defaults to false |
excludedocfilessubdir | Colon-separated list of doc-files subdirectories to exclude if docfilessubdirs is true. since Ant 1.8.0. | No |
postProcessGeneratedJavadocs | Whether to post-process the generated javadocs in order to mitigate
CVE-2013-1571. Since Ant 1.9.2 There is a frame injection attack possible in javadocs generated by Oracle JDKs prior to Java 7 update 25 (details). When this flag is set to true, Ant will check whether the docs are vulnerable and will try to fix them. |
No; defaults to true |
modulesourcepath | Specify where to find module source files since Ant 1.10.6 | No |
modulesourcepathref | Specify where to find module source files by reference to a PATH defined elsewhere. since Ant 1.10.6 | No |
modulepath | Specify where to find module files since Ant 1.10.6 | No |
modulepathref | Specify where to find module files by reference to a PATH defined elsewhere. since Ant 1.10.6 | No |
The arguments are comma-delimited. Each single argument is 2 space-delimited strings, where the first one is the group's title and the second one a colon delimited list of packages.
If you need to specify more than one group, or a group whose title contains a comma or a space
character, using nested group
elements is highly
recommended.
E.g.:
group="XSLT_Packages org.apache.xalan.xslt*,XPath_Packages org.apache.xalan.xpath*"
A DirSet. All matched directories that contain Java source
files will be passed to javadoc as package names. Package names are created from the
directory names by translating the directory separator into dots. Ant assumes the base directory of
the packageset
points to the root of a package hierarchy.
The packagenames, excludepackagenames and defaultexcludes
attributes of the task have no effect on the nested <packageset>
elements.
A FileSet. All matched files will be passed
to javadoc as source files. Ant will automatically add the include
pattern **/*.java (and **/package.html
if includenosourcepackages is true
) to these filesets.
Nested filesets can be used to document sources that are in the default package or if you want to
exclude certain files from documentation. If you want to document all source files and don't use
the default package, packageset
s should be used instead as this increases performance
of javadoc.
The packagenames, excludepackagenames and defaultexcludes
attributes of the task have no effect on the nested <fileset>
elements.
A container for arbitrary file system based resource collections. All files contained in any of the nested collections (this includes nested filesets, filelists or paths) will be passed to javadoc as source files.
Same as one entry in the list given by packagenames.
Attribute | Description | Required |
---|---|---|
name | The package name (may be a wildcard) | Yes |
Same as one entry in the list given by excludepackagenames.
package
.
since Ant 1.10.6
Same as one entry in the list given by modulenames
.
Attribute | Description | Required |
---|---|---|
name | The module name | Yes |
Same as one entry in the list given by sourcefiles.
Attribute | Description | Required |
---|---|---|
file | The source file to document | Yes |
Same as the doctitle attribute, but you can nest text inside the element this way.
If the nested text contains line breaks, you must use the useexternalfile attribute
and set it to true
.
Similar to <doctitle>
.
Similar to <doctitle>
.
Similar to <doctitle>
.
Create link to javadoc output at the given URL. This performs the same role as the link and linkoffline attributes. You can use either syntax (or both at once), but with the nested elements you can easily specify multiple occurrences of the arguments.
Attribute | Description | Required |
---|---|---|
href | The URL for the external documentation you wish to link to. This can be an absolute URL, or a relative file name. | Yes |
offline | trueif this link is not available online at the time of generating the documentation |
No |
packagelistLoc | The location to the directory containing the package-list file for the external documentation | One of the two if the offline attribute is true |
packagelistURL | The URL of the the directory containing the package-list file for the external documentation | |
resolveLink | If the link attribute is a relative file name, Ant will first try to locate the file relative to the current project's basedir and if it finds a file there use an absolute URL for the link attribute, otherwise it will pass the file name verbatim to the javadoc command. | No; default is false |
Separates packages on the overview page into whatever groups you specify, one group per table. This performs the same role as the group attribute. You can use either syntax (or both at once), but with the nested elements you can easily specify multiple occurrences of the arguments.
Attribute | Description | Required |
---|---|---|
title | Title of the group | Yes, unless nested <title> given |
packages | List of packages to include in that group. Multiple packages are separated with :. |
Yes, unless nested <package> s given |
The title may be specified as a nested <title>
element with text contents, and
the packages may be listed with nested <package>
elements as for the main
task.
The doclet nested element is used to specify
the doclet that javadoc will use to process the input source files. A
number of the standard javadoc arguments are actually arguments of the standard
doclet. If these are specified in the javadoc
task's attributes, they will be passed to
the doclet specified in the <doclet>
nested element. Such attributes should only
be specified, therefore, if they can be interpreted by the doclet in use.
If the doclet requires additional parameters, these can be specified
with <param>
elements within the <doclet>
element. These
parameters are restricted to simple strings. An example usage of the doclet
element is
shown below:
<javadoc ... > <doclet name="theDoclet" path="path/to/theDoclet"> <param name="-foo" value="foovalue"/> <param name="-bar" value="barvalue"/> </doclet> </javadoc>
If you want to specify a standard tag using a nested tag
element because you want to
determine the order the tags are output, you must not set the description attribute for
those tags.
Attribute | Description | Required |
---|---|---|
name | Name of the tag (e.g. todo) |
Yes, unless the dir attribute is specified |
description | Description for tag (e.g. To do:) |
No, the javadoc executable will pick a default if this is not specified |
enabled | Whether or not the tag is enabled | No; defaults to true |
scope | Scope for the tag—the elements in which it can be used. This is a comma separated list
of some of the
elements: overview, packages, types, constructors, methods, fieldsor the default, all. |
No; defaults to all |
dir | If this attribute is specified, this element will behave as an
implicit fileset. The files included by this fileset
should contain each tag definition on a separate line, as described in
the Javadoc reference guide:
ejb.bean:t:XDoclet EJB Tag todo:a:To DoNote: The Javadoc reference quide has double quotes around the description part of the definition. This will not work when used in a file, as the definition is quoted again when given to the javadoc program. Note: If this attribute is specified, all the other attributes in this element will be ignored. |
No |
The taglet nested element is used to specify custom taglets beyond the default taglets.
Attribute | Description | Required |
---|---|---|
name | The name of the taglet class
(e.g. com.sun.tools.doclets.ToDoTaglet ) |
Yes |
path | A path specifying the search path for the taglet class (e.g. /home/taglets).
The path may also be specified by a nested <path> element |
No |
Javadoc
's sourcepath, classpath,
bootclasspath, modulepath, and modulesourcepath
attributes are PATH like structure
and can also be set via nested sourcepath,
classpath, bootclasspath, modulepath,
and modulesourcepath elements respectively.
Since Ant 1.6
Use nested <arg>
to specify additional arguments.
See Command line arguments.
<javadoc packagenames="com.dummy.test.*" sourcepath="src" excludepackagenames="com.dummy.test.doc-files.*" defaultexcludes="yes" destdir="docs/api" author="true" version="true" use="true" windowtitle="Test API"> <doctitle><![CDATA[<h1>Test</h1>]]></doctitle> <bottom><![CDATA[<i>Copyright © 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom> <tag name="todo" scope="all" description="To do:"/> <group title="Group 1 Packages" packages="com.dummy.test.a*"/> <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/> <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/> <link href="https://docs.oracle.com/javase/8/docs/api/"/> </javadoc>
is the same as
<javadoc destdir="docs/api" author="true" version="true" use="true" windowtitle="Test API"> <packageset dir="src" defaultexcludes="yes"> <include name="com/dummy/test/**"/> <exclude name="com/dummy/test/doc-files/**"/> </packageset> <doctitle><![CDATA[<h1>Test</h1>]]></doctitle> <bottom><![CDATA[<i>Copyright © 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom> <tag name="todo" scope="all" description="To do:"/> <group title="Group 1 Packages" packages="com.dummy.test.a*"/> <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/> <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/> <link href="https://docs.oracle.com/javase/8/docs/api/"/> </javadoc>
or
<javadoc destdir="docs/api" author="true" version="true" use="true" windowtitle="Test API"> <fileset dir="src" defaultexcludes="yes"> <include name="com/dummy/test/**"/> <exclude name="com/dummy/test/doc-files/**"/> </fileset> <doctitle><![CDATA[<h1>Test</h1>]]></doctitle> <bottom><![CDATA[<i>Copyright © 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom> <tag name="todo" scope="all" description="To do:"/> <group title="Group 1 Packages" packages="com.dummy.test.a*"/> <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/> <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/> <link href="https://docs.oracle.com/javase/8/docs/api/"/> </javadoc>