Two new nested elements, <packageset> and <fileset>. <packageset> is a DirSet that points to directories which get translated into packages if they contain .java sources, <fileset> points to sourcefiles. <packageset> based on a patch by Daniel Ritchey <ritchey_49@hotmail.com>. <fileset> allows you to select files in the default package as well. PR: 6433 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272583 13f79535-47bb-0310-9956-ffa450edef68master
@@ -345,6 +345,8 @@ Other changes: | |||||
* <patch> has a new attribute that selects the directory in which to | * <patch> has a new attribute that selects the directory in which to | ||||
run the command. | run the command. | ||||
* <javadoc> now supports two new nested elements, <fileset> and <packageset>. | |||||
Changes from Ant 1.4 to Ant 1.4.1 | Changes from Ant 1.4 to Ant 1.4.1 | ||||
=========================================== | =========================================== | ||||
@@ -1042,15 +1042,16 @@ | |||||
unless="javadoc.notrequired" | unless="javadoc.notrequired" | ||||
description="--> creates the API documentation"> | description="--> creates the API documentation"> | ||||
<mkdir dir="${build.javadocs}"/> | <mkdir dir="${build.javadocs}"/> | ||||
<javadoc packagenames="org.apache.*" | |||||
useexternalfile="yes" | |||||
sourcepath="${java.dir}" | |||||
<javadoc useexternalfile="yes" | |||||
destdir="${build.javadocs}" | destdir="${build.javadocs}" | ||||
author="true" | author="true" | ||||
version="true" | version="true" | ||||
locale="en" | locale="en" | ||||
windowtitle="${Name} API" | windowtitle="${Name} API" | ||||
doctitle="${Name}"> | doctitle="${Name}"> | ||||
<packageset dir="${java.dir}" /> | |||||
<tag name="todo" description="To do:" scope="all" /> | <tag name="todo" description="To do:" scope="all" /> | ||||
<tag name="ant.task" enabled="false" description="Task:" scope="types" /> | <tag name="ant.task" enabled="false" description="Task:" scope="types" /> | ||||
<tag name="ant.datatype" enabled="false" description="Data type:" scope="types" /> | <tag name="ant.datatype" enabled="false" description="Data type:" scope="types" /> | ||||
@@ -295,26 +295,6 @@ | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | <font color="#000000" size="-1" face="arial,helvetica,sanserif"> | ||||
Steve + any other help he can get | Steve + any other help he can get | ||||
</font> | </font> | ||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
Make javadoc a real directory based task | |||||
</font> | |||||
</td> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
| |||||
</font> | |||||
</td> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
Stefan, others welcome | |||||
</font> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -492,6 +472,26 @@ | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | <font color="#000000" size="-1" face="arial,helvetica,sanserif"> | ||||
Stefan | Stefan | ||||
</font> | </font> | ||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
Make javadoc a real directory based task | |||||
</font> | |||||
</td> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
| |||||
</font> | |||||
</td> | |||||
<td bgcolor="#a0ddf0" colspan="" rowspan="" | |||||
valign="top" align="left"> | |||||
<font color="#000000" size="-1" face="arial,helvetica,sanserif"> | |||||
Stefan | |||||
</font> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -18,9 +18,9 @@ and management costs over time. This task, however, has no notion of | |||||
"changed" files, unlike the <a href="javac.html">javac</a> task. This means | "changed" files, unlike the <a href="javac.html">javac</a> task. This means | ||||
all packages will be processed each time this task is run. In general, however, | all packages will be processed each time this task is run. In general, however, | ||||
this task is used much less frequently.</p> | this task is used much less frequently.</p> | ||||
<p>This task works seamlessly between different javadoc versions (1.1 and 1.2), | |||||
with the obvious restriction that the 1.2 attributes will be ignored if run in a | |||||
1.1 VM.</p> | |||||
<p>This task works seamlessly between different javadoc versions (1.1, | |||||
1.2 and 1.4), with the obvious restriction that the 1.2 attributes | |||||
will be ignored if run in a 1.1 VM.</p> | |||||
<p>NOTE: since javadoc calls System.exit(), javadoc cannot be run inside the | <p>NOTE: since javadoc calls System.exit(), javadoc cannot be run inside the | ||||
same VM as ant without breaking functionality. For this reason, this task | same VM as ant without breaking functionality. For this reason, this task | ||||
always forks the VM. This overhead is not significant since javadoc is normally a heavy | always forks the VM. This overhead is not significant since javadoc is normally a heavy | ||||
@@ -38,6 +38,11 @@ notation. </p> | |||||
there for back compatibility reasons. Since this task will be removed in future | there for back compatibility reasons. Since this task will be removed in future | ||||
versions, you are strongly encouraged to use <a href="javadoc.html">javadoc</a> | versions, you are strongly encouraged to use <a href="javadoc.html">javadoc</a> | ||||
instead.</i></p> | instead.</i></p> | ||||
<p>In the table below, 1.1 means available if your current Java VM is | |||||
a 1.1 VM, 1.2 for either 1.2 or 1.3 and 1.4 for a 1.4 Java VM. 1.2+ | |||||
means any VM of at least version 1.2.</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
@@ -50,8 +55,9 @@ instead.</i></p> | |||||
<td valign="top">sourcepath</td> | <td valign="top">sourcepath</td> | ||||
<td valign="top">Specify where to find source files</td> | <td valign="top">Specify where to find source files</td> | ||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
<td align="center" rowspan="2">At least one of the two or nested | |||||
<code><sourcepath></code></td> | |||||
<td align="center" rowspan="3">At least one of the three or nested | |||||
<code><sourcepath></code>, <code><fileset></code> or | |||||
<code><packageset></code></td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">sourcepathref</td> | <td valign="top">sourcepathref</td> | ||||
@@ -59,6 +65,11 @@ instead.</i></p> | |||||
href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> | href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> | ||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">sourcefiles</td> | |||||
<td valign="top">Comma separated list of source files</td> | |||||
<td align="center" valign="top">all</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">destdir</td> | <td valign="top">destdir</td> | ||||
<td valign="top">Destination directory for output files</td> | <td valign="top">Destination directory for output files</td> | ||||
@@ -71,23 +82,17 @@ instead.</i></p> | |||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">sourcefiles</td> | |||||
<td valign="top">Comma separated list of source files</td> | |||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="middle" rowspan="2">at least one of the two | |||||
or nested <code><source></code> or <code><package></code></td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">packagenames</td> | <td valign="top">packagenames</td> | ||||
<td valign="top">Comma separated list of package files (with terminating | <td valign="top">Comma separated list of package files (with terminating | ||||
wildcard)</td> | wildcard)</td> | ||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
<td align="center" valign="top">No</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">packageList</td> | <td valign="top">packageList</td> | ||||
<td valign="top">The name of a file containing the packages to process</td> | <td valign="top">The name of a file containing the packages to process</td> | ||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -100,7 +105,7 @@ instead.</i></p> | |||||
<td valign="top">Bootclasspath</td> | <td valign="top">Bootclasspath</td> | ||||
<td valign="top">Override location of class files loaded by the bootstrap | <td valign="top">Override location of class files loaded by the bootstrap | ||||
class loader</td> | class loader</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -115,19 +120,19 @@ instead.</i></p> | |||||
<td valign="top">Override location of class files loaded by the | <td valign="top">Override location of class files loaded by the | ||||
bootstrap class loader by <a href="../using.html#references">reference</a> to a | bootstrap class loader by <a href="../using.html#references">reference</a> to a | ||||
PATH defined elsewhere.</td> | PATH defined elsewhere.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Extdirs</td> | <td valign="top">Extdirs</td> | ||||
<td valign="top">Override location of installed extensions</td> | <td valign="top">Override location of installed extensions</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Overview</td> | <td valign="top">Overview</td> | ||||
<td valign="top">Read overview documentation from HTML file</td> | <td valign="top">Read overview documentation from HTML file</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -170,13 +175,13 @@ instead.</i></p> | |||||
<tr> | <tr> | ||||
<td valign="top">Verbose</td> | <td valign="top">Verbose</td> | ||||
<td valign="top">Output messages about what Javadoc is doing</td> | <td valign="top">Output messages about what Javadoc is doing</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Locale</td> | <td valign="top">Locale</td> | ||||
<td valign="top">Locale to be used, e.g. en_US or en_US_WIN</td> | <td valign="top">Locale to be used, e.g. en_US or en_US_WIN</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -194,7 +199,7 @@ instead.</i></p> | |||||
<tr> | <tr> | ||||
<td valign="top">Use</td> | <td valign="top">Use</td> | ||||
<td valign="top">Create class and package usage pages</td> | <td valign="top">Create class and package usage pages</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -206,57 +211,57 @@ instead.</i></p> | |||||
<tr> | <tr> | ||||
<td valign="top">Splitindex</td> | <td valign="top">Splitindex</td> | ||||
<td valign="top">Split index into one file per letter</td> | <td valign="top">Split index into one file per letter</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Windowtitle</td> | <td valign="top">Windowtitle</td> | ||||
<td valign="top">Browser window title for the documentation (text)</td> | <td valign="top">Browser window title for the documentation (text)</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Doctitle</td> | <td valign="top">Doctitle</td> | ||||
<td valign="top">Include title for the package index(first) page (html-code)</td> | <td valign="top">Include title for the package index(first) page (html-code)</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Header</td> | <td valign="top">Header</td> | ||||
<td valign="top">Include header text for each page (html-code)</td> | <td valign="top">Include header text for each page (html-code)</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Footer</td> | <td valign="top">Footer</td> | ||||
<td valign="top">Include footer text for each page (html-code)</td> | <td valign="top">Include footer text for each page (html-code)</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">bottom</td> | <td valign="top">bottom</td> | ||||
<td valign="top">Include bottom text for each page (html-code)</td> | <td valign="top">Include bottom text for each page (html-code)</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">link</td> | <td valign="top">link</td> | ||||
<td valign="top">Create links to javadoc output at the given URL</td> | <td valign="top">Create links to javadoc output at the given URL</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">linkoffline</td> | <td valign="top">linkoffline</td> | ||||
<td valign="top">Link to docs at <url> using package list at | <td valign="top">Link to docs at <url> using package list at | ||||
<url2> - separate the URLs by using a space character.</td> | <url2> - separate the URLs by using a space character.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">group</td> | <td valign="top">group</td> | ||||
<td valign="top">Group specified packages together in overview | <td valign="top">Group specified packages together in overview | ||||
page. The format is as described <a href="#groupattribute">below</a>.</td> | page. The format is as described <a href="#groupattribute">below</a>.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -268,7 +273,7 @@ instead.</i></p> | |||||
<tr> | <tr> | ||||
<td valign="top">nodeprecatedlist</td> | <td valign="top">nodeprecatedlist</td> | ||||
<td valign="top">Do not generate deprecated list</td> | <td valign="top">Do not generate deprecated list</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -286,56 +291,56 @@ instead.</i></p> | |||||
<tr> | <tr> | ||||
<td valign="top">nohelp</td> | <td valign="top">nohelp</td> | ||||
<td valign="top">Do not generate help link</td> | <td valign="top">Do not generate help link</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">nonavbar</td> | <td valign="top">nonavbar</td> | ||||
<td valign="top">Do not generate navigation bar</td> | <td valign="top">Do not generate navigation bar</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">serialwarn</td> | <td valign="top">serialwarn</td> | ||||
<td valign="top">FUTURE: Generate warning about @serial tag</td> | |||||
<td align="center" valign="top">1.2</td> | |||||
<td valign="top">Generate warning about @serial tag</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">helpfile</td> | <td valign="top">helpfile</td> | ||||
<td valign="top">FUTURE: Specifies the HTML help file to use</td> | |||||
<td align="center" valign="top">1.2</td> | |||||
<td valign="top">Specifies the HTML help file to use</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">stylesheetfile</td> | <td valign="top">stylesheetfile</td> | ||||
<td valign="top">Specifies the CSS stylesheet to use</td> | <td valign="top">Specifies the CSS stylesheet to use</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">charset</td> | <td valign="top">charset</td> | ||||
<td valign="top">FUTURE: Charset for cross-platform viewing of generated | |||||
<td valign="top">Charset for cross-platform viewing of generated | |||||
documentation</td> | documentation</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">docencoding</td> | <td valign="top">docencoding</td> | ||||
<td valign="top">Output file encoding name</td> | <td valign="top">Output file encoding name</td> | ||||
<td align="center" valign="top">1.1</td> | |||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">doclet</td> | <td valign="top">doclet</td> | ||||
<td valign="top">Specifies the class file that starts the doclet used in generating the documentation.</td> | <td valign="top">Specifies the class file that starts the doclet used in generating the documentation.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">docletpath</td> | <td valign="top">docletpath</td> | ||||
<td valign="top">Specifies the path to the doclet class file that is specified with the -doclet option.</td> | <td valign="top">Specifies the path to the doclet class file that is specified with the -doclet option.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -343,7 +348,7 @@ instead.</i></p> | |||||
<td valign="top">Specifies the path to the doclet class file that | <td valign="top">Specifies the path to the doclet class file that | ||||
is specified with the -doclet option by <a | is specified with the -doclet option by <a | ||||
href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> | href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -351,7 +356,7 @@ instead.</i></p> | |||||
<td valign="top">Lets you add additional parameters to the javadoc | <td valign="top">Lets you add additional parameters to the javadoc | ||||
command line. Useful for doclets. Parameters containing | command line. Useful for doclets. Parameters containing | ||||
spaces need to be quoted using &quot;.</td> | spaces need to be quoted using &quot;.</td> | ||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -383,7 +388,7 @@ instead.</i></p> | |||||
the package names specified via the packagenames attribute or | the package names specified via the packagenames attribute or | ||||
nested package elements. | nested package elements. | ||||
(<code>yes</code> | <code>no</code>). Default is no.</td> | (<code>yes</code> | <code>no</code>). Default is no.</td> | ||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="top">1.2+</td> | |||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -412,6 +417,36 @@ recommended.</p> | |||||
<h3>Parameters specified as nested elements</h3> | <h3>Parameters specified as nested elements</h3> | ||||
<h4>packageset</h4> | |||||
<p>A <a href="../CoreTypes/dirset.html">DirSet</a>. 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.</p> | |||||
<p>The <code>packagenames</code>, <code>excludepackagenames</code> and | |||||
<code>defaultexcludes</code> attributes of the task have no effect on | |||||
the nested <code><packageset></code> elements.</p> | |||||
<h4>fileset</h4> | |||||
<p>A <a href="../CoreTypes/fileset.html">FileSet</a>. All matched | |||||
files will be passed to javadoc as source files. Ant will | |||||
automatically add the include pattern <code>**/*.java</code> to these | |||||
filesets.</p> | |||||
<p>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, packagesets should be used instead as this | |||||
increases javadocs performance.</p> | |||||
<p>The <code>packagenames</code>, <code>excludepackagenames</code> and | |||||
<code>defaultexcludes</code> attributes of the task have no effect on | |||||
the nested <code><fileset></code> elements.</p> | |||||
<h4>package</h4> | <h4>package</h4> | ||||
<p>Same as one entry in the list given by <code>packagenames</code>.</p> | <p>Same as one entry in the list given by <code>packagenames</code>.</p> | ||||
@@ -554,8 +589,9 @@ of the doclet element is shown below:</p> | |||||
</pre> | </pre> | ||||
<h4><a name="tagelement">tag</a></h4> | <h4><a name="tagelement">tag</a></h4> | ||||
<p>The tag nested element is used to specify custom tags. This option is only available | |||||
with Java 1.4.</p> | |||||
<p>The tag nested element is used to specify custom tags. This option | |||||
is only available with Java 1.4.</p> | |||||
<h5>Parameters</h5> | <h5>Parameters</h5> | ||||
<table width="60%" border="1" cellpadding="2" cellspacing="0"> | <table width="60%" border="1" cellpadding="2" cellspacing="0"> | ||||
@@ -641,6 +677,52 @@ respectively.</p> | |||||
<link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/> | <link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/> | ||||
</javadoc></pre> | </javadoc></pre> | ||||
<p>is the same as</p> | |||||
<pre> <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 &#169; 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="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp"/> | |||||
<link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/> | |||||
</javadoc></pre> | |||||
<p>or</p> | |||||
<pre> <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 &#169; 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="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp"/> | |||||
<link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/> | |||||
</javadoc></pre> | |||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | <p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | ||||
Reserved.</p> | Reserved.</p> | ||||
@@ -67,11 +67,13 @@ import org.apache.tools.ant.DirectoryScanner; | |||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.ProjectComponent; | import org.apache.tools.ant.ProjectComponent; | ||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.Reference; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
import org.apache.tools.ant.types.DirSet; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.PatternSet; | |||||
import org.apache.tools.ant.types.Reference; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.JavaEnvUtils; | import org.apache.tools.ant.util.JavaEnvUtils; | ||||
@@ -84,7 +86,6 @@ import org.apache.tools.ant.util.JavaEnvUtils; | |||||
* <P><UL> | * <P><UL> | ||||
* <LI>patterns must be of the form "xxx.*", every other pattern doesn't | * <LI>patterns must be of the form "xxx.*", every other pattern doesn't | ||||
* work. | * work. | ||||
* <LI>the java comment-stripper reader is horribly slow | |||||
* <LI>there is no control on arguments sanity since they are left | * <LI>there is no control on arguments sanity since they are left | ||||
* to the javadoc implementation. | * to the javadoc implementation. | ||||
* <LI>argument J in javadoc1 is not supported (what is that for anyway?) | * <LI>argument J in javadoc1 is not supported (what is that for anyway?) | ||||
@@ -281,7 +282,7 @@ public class Javadoc extends Task { | |||||
* @param name the package name. | * @param name the package name. | ||||
*/ | */ | ||||
public void setName(String name) { | public void setName(String name) { | ||||
this.name = name; | |||||
this.name = name.trim(); | |||||
} | } | ||||
/** | /** | ||||
@@ -308,6 +309,11 @@ public class Javadoc extends Task { | |||||
/** The source file */ | /** The source file */ | ||||
private File file; | private File file; | ||||
public SourceFile() {} | |||||
public SourceFile(File file) { | |||||
this.file = file; | |||||
} | |||||
/** | /** | ||||
* Set the source file. | * Set the source file. | ||||
* | * | ||||
@@ -375,14 +381,14 @@ public class Javadoc extends Task { | |||||
private Commandline cmd = new Commandline(); | private Commandline cmd = new Commandline(); | ||||
/** Flag which indicates if javadoc from JDK 1.1 is to be used. */ | /** Flag which indicates if javadoc from JDK 1.1 is to be used. */ | ||||
private static boolean javadoc1 = | |||||
(JavaEnvUtils.getJavaVersion() == JavaEnvUtils.JAVA_1_1); | |||||
private static boolean javadoc1 = | |||||
JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1); | |||||
/** Flag which indicates if javadoc from JDK 1.4 is available */ | /** Flag which indicates if javadoc from JDK 1.4 is available */ | ||||
private static boolean javadoc4 = | private static boolean javadoc4 = | ||||
(JavaEnvUtils.getJavaVersion() != JavaEnvUtils.JAVA_1_1 && | |||||
JavaEnvUtils.getJavaVersion() != JavaEnvUtils.JAVA_1_2 && | |||||
JavaEnvUtils.getJavaVersion() != JavaEnvUtils.JAVA_1_3); | |||||
(!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1) && | |||||
!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2) && | |||||
!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3)); | |||||
/** | /** | ||||
* Utility method to add an argument to the command line conditionally | * Utility method to add an argument to the command line conditionally | ||||
@@ -429,7 +435,8 @@ public class Javadoc extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Flag which indicates if the task should fail if there is a javadoc error. | |||||
* Flag which indicates if the task should fail if there is a | |||||
* javadoc error. | |||||
*/ | */ | ||||
private boolean failOnError = false; | private boolean failOnError = false; | ||||
private Path sourcePath = null; | private Path sourcePath = null; | ||||
@@ -453,10 +460,12 @@ public class Javadoc extends Task { | |||||
private Html footer = null; | private Html footer = null; | ||||
private Html bottom = null; | private Html bottom = null; | ||||
private boolean useExternalFile = false; | private boolean useExternalFile = false; | ||||
private File tmpList = null; | |||||
private FileUtils fileUtils = FileUtils.newFileUtils(); | private FileUtils fileUtils = FileUtils.newFileUtils(); | ||||
private String source = null; | private String source = null; | ||||
private Vector fileSets = new Vector(); | |||||
private Vector packageSets = new Vector(); | |||||
/** | /** | ||||
* Work around command line length limit by using an external file | * Work around command line length limit by using an external file | ||||
* for the sourcefiles. | * for the sourcefiles. | ||||
@@ -1098,7 +1107,9 @@ public class Javadoc extends Task { | |||||
cmd.createArgument().setValue(enc); | cmd.createArgument().setValue(enc); | ||||
} | } | ||||
public void setPackageList(String src) { | public void setPackageList(String src) { | ||||
packageList = src; | |||||
if (!javadoc1) { | |||||
packageList = src; | |||||
} | |||||
} | } | ||||
public LinkArgument createLink() { | public LinkArgument createLink() { | ||||
@@ -1389,22 +1400,62 @@ public class Javadoc extends Task { | |||||
this.source = source; | this.source = source; | ||||
} | } | ||||
/** | |||||
* Adds a packageset. | |||||
* | |||||
* <p>All included directories will be translated into package | |||||
* names be converting the directory separator into dots.</p> | |||||
* | |||||
* @since 1.5 | |||||
*/ | |||||
public void addPackageset(DirSet packageSet) { | |||||
packageSets.addElement(packageSet); | |||||
} | |||||
/** | |||||
* Adds a fileset. | |||||
* | |||||
* <p>All included files will be added as sourcefiles. The task | |||||
* will automatically add | |||||
* <code>includes="**/*.java"</code> to the | |||||
* fileset.</p> | |||||
* | |||||
* @since 1.5 | |||||
*/ | |||||
public void addFileset(FileSet fs) { | |||||
fs.createInclude().setName("**/*.java"); | |||||
fileSets.addElement(fs); | |||||
} | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
if ("javadoc2".equals(taskType)) { | if ("javadoc2".equals(taskType)) { | ||||
log("!! javadoc2 is deprecated. Use javadoc instead. !!"); | log("!! javadoc2 is deprecated. Use javadoc instead. !!"); | ||||
} | } | ||||
if (sourcePath == null) { | |||||
String msg = "sourcePath attribute must be set!"; | |||||
Vector packagesToDoc = new Vector(); | |||||
Path sourceDirs = new Path(getProject()); | |||||
parsePackages(packagesToDoc, sourceDirs); | |||||
if (packagesToDoc.size() != 0 && sourceDirs.size() == 0) { | |||||
String msg = "sourcePath attribute must be set when " | |||||
+ "specifying package names."; | |||||
throw new BuildException(msg); | throw new BuildException(msg); | ||||
} | } | ||||
Vector sourceFilesToDoc = (Vector) sourceFiles.clone(); | |||||
addFileSets(sourceFilesToDoc); | |||||
if (packagesToDoc.size() == 0 && sourceFilesToDoc.size() == 0) { | |||||
throw new BuildException("No source files and no packages have " | |||||
+ "been specified."); | |||||
} | |||||
log("Generating Javadoc", Project.MSG_INFO); | log("Generating Javadoc", Project.MSG_INFO); | ||||
Commandline toExecute = (Commandline) cmd.clone(); | Commandline toExecute = (Commandline) cmd.clone(); | ||||
toExecute.setExecutable(JavaEnvUtils.getJdkExecutable("javadoc")); | toExecute.setExecutable(JavaEnvUtils.getJdkExecutable("javadoc")); | ||||
// ------------------------------------------------ general javadoc arguments | |||||
// ------------------------------------------ general javadoc arguments | |||||
if (doctitle != null) { | if (doctitle != null) { | ||||
toExecute.createArgument().setValue("-doctitle"); | toExecute.createArgument().setValue("-doctitle"); | ||||
toExecute.createArgument().setValue(expand(doctitle.getText())); | toExecute.createArgument().setValue(expand(doctitle.getText())); | ||||
@@ -1431,14 +1482,14 @@ public class Javadoc extends Task { | |||||
if (!javadoc1) { | if (!javadoc1) { | ||||
toExecute.createArgument().setValue("-classpath"); | toExecute.createArgument().setValue("-classpath"); | ||||
toExecute.createArgument().setPath(classpath); | toExecute.createArgument().setPath(classpath); | ||||
toExecute.createArgument().setValue("-sourcepath"); | |||||
toExecute.createArgument().setPath(sourcePath); | |||||
if (sourceDirs.size() > 0) { | |||||
toExecute.createArgument().setValue("-sourcepath"); | |||||
toExecute.createArgument().setPath(sourceDirs); | |||||
} | |||||
} else { | } else { | ||||
sourceDirs.append(classpath); | |||||
toExecute.createArgument().setValue("-classpath"); | toExecute.createArgument().setValue("-classpath"); | ||||
toExecute.createArgument() | |||||
.setValue(sourcePath.toString() | |||||
+ System.getProperty("path.separator") | |||||
+ classpath.toString()); | |||||
toExecute.createArgument().setPath(sourceDirs); | |||||
} | } | ||||
if (version && doclet == null) { | if (version && doclet == null) { | ||||
@@ -1455,7 +1506,7 @@ public class Javadoc extends Task { | |||||
} | } | ||||
} | } | ||||
// --------------------------------- javadoc2 arguments for default doclet | |||||
// ---------------------------- javadoc2 arguments for default doclet | |||||
if (!javadoc1) { | if (!javadoc1) { | ||||
if (doclet != null) { | if (doclet != null) { | ||||
@@ -1616,71 +1667,53 @@ public class Javadoc extends Task { | |||||
} | } | ||||
tmpList = null; | |||||
if (packageNames.size() > 0) { | |||||
Vector packages = new Vector(); | |||||
Enumeration enum = packageNames.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
PackageName pn = (PackageName) enum.nextElement(); | |||||
String name = pn.getName().trim(); | |||||
if (name.endsWith(".*")) { | |||||
packages.addElement(name); | |||||
} else { | |||||
toExecute.createArgument().setValue(name); | |||||
} | |||||
} | |||||
File tmpList = null; | |||||
PrintWriter srcListWriter = null; | |||||
try { | |||||
Vector excludePackages = new Vector(); | |||||
if (excludePackageNames.size() > 0) { | |||||
enum = excludePackageNames.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
PackageName pn = (PackageName) enum.nextElement(); | |||||
excludePackages.addElement(pn.getName().trim()); | |||||
/** | |||||
* Write sourcefiles and package names to a temporary file | |||||
* if requested. | |||||
*/ | |||||
if (useExternalFile) { | |||||
if (tmpList == null) { | |||||
tmpList = fileUtils.createTempFile("javadoc", "", null); | |||||
toExecute.createArgument() | |||||
.setValue("@" + tmpList.getAbsolutePath()); | |||||
} | } | ||||
srcListWriter = new PrintWriter( | |||||
new FileWriter(tmpList.getAbsolutePath(), | |||||
true)); | |||||
} | } | ||||
if (packages.size() > 0) { | |||||
evaluatePackages(toExecute, sourcePath, packages, | |||||
excludePackages); | |||||
} | |||||
} | |||||
if (sourceFiles.size() > 0) { | |||||
PrintWriter srcListWriter = null; | |||||
try { | |||||
/** | |||||
* Write sourcefiles to a temporary file if requested. | |||||
*/ | |||||
Enumeration enum = packagesToDoc.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
String packageName = (String) enum.nextElement(); | |||||
if (useExternalFile) { | if (useExternalFile) { | ||||
if (tmpList == null) { | |||||
tmpList = fileUtils.createTempFile("javadoc", "", null); | |||||
toExecute.createArgument() | |||||
.setValue("@" + tmpList.getAbsolutePath()); | |||||
} | |||||
srcListWriter = new PrintWriter( | |||||
new FileWriter(tmpList | |||||
.getAbsolutePath(), | |||||
true)); | |||||
srcListWriter.println(packageName); | |||||
} else { | |||||
toExecute.createArgument().setValue(packageName); | |||||
} | } | ||||
Enumeration enum = sourceFiles.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
SourceFile sf = (SourceFile) enum.nextElement(); | |||||
String sourceFileName = sf.getFile().getAbsolutePath(); | |||||
if (useExternalFile) { | |||||
srcListWriter.println(sourceFileName); | |||||
} else { | |||||
toExecute.createArgument().setValue(sourceFileName); | |||||
} | |||||
} | |||||
enum = sourceFilesToDoc.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
SourceFile sf = (SourceFile) enum.nextElement(); | |||||
String sourceFileName = sf.getFile().getAbsolutePath(); | |||||
if (useExternalFile) { | |||||
srcListWriter.println(sourceFileName); | |||||
} else { | |||||
toExecute.createArgument().setValue(sourceFileName); | |||||
} | } | ||||
} | |||||
} catch (IOException e) { | |||||
throw new BuildException("Error creating temporary file", | |||||
e, location); | |||||
} finally { | |||||
if (srcListWriter != null) { | |||||
srcListWriter.close(); | |||||
} | |||||
} catch (IOException e) { | |||||
tmpList.delete(); | |||||
throw new BuildException("Error creating temporary file", | |||||
e, location); | |||||
} finally { | |||||
if (srcListWriter != null) { | |||||
srcListWriter.close(); | |||||
} | } | ||||
} | } | ||||
@@ -1712,7 +1745,6 @@ public class Javadoc extends Task { | |||||
} catch (IOException e) { | } catch (IOException e) { | ||||
throw new BuildException("Javadoc failed: " + e, e, location); | throw new BuildException("Javadoc failed: " + e, e, location); | ||||
} finally { | } finally { | ||||
if (tmpList != null) { | if (tmpList != null) { | ||||
tmpList.delete(); | tmpList.delete(); | ||||
tmpList = null; | tmpList = null; | ||||
@@ -1728,111 +1760,105 @@ public class Javadoc extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Given a source path, a list of package patterns, fill the given list | |||||
* with the packages found in that path subdirs matching one of the given | |||||
* patterns. | |||||
*/ | |||||
private void evaluatePackages(Commandline toExecute, Path sourcePath, | |||||
Vector packages, Vector excludePackages) { | |||||
log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE); | |||||
StringBuffer msg = new StringBuffer("Packages = "); | |||||
for (int i = 0; i < packages.size(); i++) { | |||||
if (i > 0) { | |||||
msg.append(","); | |||||
} | |||||
msg.append(packages.elementAt(i)); | |||||
} | |||||
log(msg.toString(), Project.MSG_VERBOSE); | |||||
msg.setLength(0); | |||||
msg.append("Exclude Packages = "); | |||||
for (int i = 0; i < excludePackages.size(); i++) { | |||||
if (i > 0) { | |||||
msg.append(","); | |||||
* Add the files matched by the nested filesets to the Vector as | |||||
* SourceFile instances. | |||||
* | |||||
* @since 1.5 | |||||
*/ | |||||
private void addFileSets(Vector sf) { | |||||
Enumeration enum = fileSets.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
FileSet fs = (FileSet) enum.nextElement(); | |||||
File baseDir = fs.getDir(getProject()); | |||||
DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | |||||
String[] files = ds.getIncludedFiles(); | |||||
for (int i = 0; i < files.length; i++) { | |||||
sf.addElement(new SourceFile(new File(baseDir, files[i]))); | |||||
} | } | ||||
msg.append(excludePackages.elementAt(i)); | |||||
} | } | ||||
log(msg.toString(), Project.MSG_VERBOSE); | |||||
} | |||||
/** | |||||
* Add the directories matched by the nested dirsets to the Vector | |||||
* and the base directories of the dirsets to the Path. It also | |||||
* handles the packages and excludepackages attributes and | |||||
* elements. | |||||
* | |||||
* @since 1.5 | |||||
*/ | |||||
private void parsePackages(Vector pn, Path sp) { | |||||
Vector addedPackages = new Vector(); | Vector addedPackages = new Vector(); | ||||
String[] list = sourcePath.list(); | |||||
if (list == null) { | |||||
list = new String[0]; | |||||
} | |||||
FileSet fs = new FileSet(); | |||||
fs.setDefaultexcludes(useDefaultExcludes); | |||||
Enumeration e = packages.elements(); | |||||
while (e.hasMoreElements()) { | |||||
String pkg = (String) e.nextElement(); | |||||
pkg = pkg.replace('.', '/'); | |||||
if (pkg.endsWith("*")) { | |||||
pkg += "*"; | |||||
Vector dirSets = (Vector) packageSets.clone(); | |||||
// for each sourcePath entry, add a directoryset with includes | |||||
// taken from packagenames attribute and nested package | |||||
// elements and excludes taken from excludepackages attribute | |||||
// and nested excludepackage elements | |||||
if (sourcePath != null) { | |||||
PatternSet ps = new PatternSet(); | |||||
Enumeration enum = packageNames.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
PackageName p = (PackageName) enum.nextElement(); | |||||
String pkg = p.getName().replace('.', '/'); | |||||
if (pkg.endsWith("*")) { | |||||
pkg += "*"; | |||||
} | |||||
ps.createInclude().setName(pkg); | |||||
} | } | ||||
fs.createInclude().setName(pkg); | |||||
} // while | |||||
e = excludePackages.elements(); | |||||
while (e.hasMoreElements()) { | |||||
String pkg = (String) e.nextElement(); | |||||
pkg = pkg.replace('.', '/'); | |||||
if (pkg.endsWith("*")) { | |||||
pkg += "*"; | |||||
enum = excludePackageNames.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
PackageName p = (PackageName) enum.nextElement(); | |||||
String pkg = p.getName().replace('.', '/'); | |||||
if (pkg.endsWith("*")) { | |||||
pkg += "*"; | |||||
} | |||||
ps.createExclude().setName(pkg); | |||||
} | } | ||||
fs.createExclude().setName(pkg); | |||||
} | |||||
PrintWriter packageListWriter = null; | |||||
try { | |||||
if (useExternalFile) { | |||||
tmpList = fileUtils.createTempFile("javadoc", "", null); | |||||
toExecute.createArgument() | |||||
.setValue("@" + tmpList.getAbsolutePath()); | |||||
packageListWriter = new PrintWriter(new FileWriter(tmpList)); | |||||
String[] pathElements = sourcePath.list(); | |||||
for (int i = 0; i < pathElements.length; i++) { | |||||
DirSet ds = new DirSet(); | |||||
ds.setDefaultexcludes(useDefaultExcludes); | |||||
ds.setDir(new File(pathElements[i])); | |||||
ds.createPatternSet().addConfiguredPatternset(ps); | |||||
dirSets.addElement(ds); | |||||
} | } | ||||
} | |||||
for (int j = 0; j < list.length; j++) { | |||||
File source = project.resolveFile(list[j]); | |||||
fs.setDir(source); | |||||
DirectoryScanner ds = fs.getDirectoryScanner(project); | |||||
String[] packageDirs = ds.getIncludedDirectories(); | |||||
for (int i = 0; i < packageDirs.length; i++) { | |||||
File pd = new File(source, packageDirs[i]); | |||||
String[] files = pd.list(new FilenameFilter () { | |||||
public boolean accept(File dir1, String name) { | |||||
if (name.endsWith(".java")) { | |||||
return true; | |||||
} | |||||
return false; // ignore dirs | |||||
} | |||||
}); | |||||
if (files.length > 0) { | |||||
String pkgDir = | |||||
packageDirs[i].replace('/', '.').replace('\\', '.'); | |||||
if (!addedPackages.contains(pkgDir)) { | |||||
if (useExternalFile) { | |||||
packageListWriter.println(pkgDir); | |||||
} else { | |||||
toExecute.createArgument().setValue(pkgDir); | |||||
Enumeration enum = dirSets.elements(); | |||||
while (enum.hasMoreElements()) { | |||||
DirSet ds = (DirSet) enum.nextElement(); | |||||
File baseDir = ds.getDir(getProject()); | |||||
log("scanning " + baseDir + " for packages.", Project.MSG_DEBUG); | |||||
DirectoryScanner dsc = ds.getDirectoryScanner(getProject()); | |||||
String[] dirs = dsc.getIncludedDirectories(); | |||||
boolean containsPackages = false; | |||||
for (int i = 0; i < dirs.length; i++) { | |||||
// are there any java files in this directory? | |||||
File pd = new File(baseDir, dirs[i]); | |||||
String[] files = pd.list(new FilenameFilter () { | |||||
public boolean accept(File dir1, String name) { | |||||
if (name.endsWith(".java")) { | |||||
return true; | |||||
} | } | ||||
addedPackages.addElement(pkgDir); | |||||
return false; // ignore dirs | |||||
} | } | ||||
}); | |||||
if (files.length > 0) { | |||||
containsPackages = true; | |||||
String packageName = | |||||
dirs[i].replace(File.separatorChar, '.'); | |||||
if (!addedPackages.contains(packageName)) { | |||||
addedPackages.addElement(packageName); | |||||
pn.addElement(packageName); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} catch (IOException ioex) { | |||||
throw new BuildException("Error creating temporary file", | |||||
ioex, location); | |||||
} finally { | |||||
if (packageListWriter != null) { | |||||
packageListWriter.close(); | |||||
if (containsPackages) { | |||||
sp.createPathElement().setLocation(baseDir); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -356,7 +356,7 @@ public class Path extends DataType implements Cloneable { | |||||
// empty path return empty string | // empty path return empty string | ||||
if (list.length == 0) { | if (list.length == 0) { | ||||
return ""; | |||||
return ""; | |||||
} | } | ||||
// path containing one or more elements | // path containing one or more elements | ||||
@@ -72,13 +72,6 @@ | |||||
<td>Steve + any other help he can get</td> | <td>Steve + any other help he can get</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td>Make javadoc a real directory based task</td> | |||||
<td></td> | |||||
<td>Stefan, others welcome</td> | |||||
</tr> | |||||
<!-- for cut and paste use | <!-- for cut and paste use | ||||
<tr> | <tr> | ||||
<td></td> | <td></td> | ||||
@@ -136,6 +129,11 @@ | |||||
<td></td> | <td></td> | ||||
<td>Stefan</td> | <td>Stefan</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td>Make javadoc a real directory based task</td> | |||||
<td></td> | |||||
<td>Stefan</td> | |||||
</tr> | |||||
</table> | </table> | ||||
</subsection> | </subsection> | ||||