Submitted by: Patrick Chanezon <chanezon@netscape.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267712 13f79535-47bb-0310-9956-ffa450edef68master
@@ -13,6 +13,7 @@ | |||||
<ul> | <ul> | ||||
<li>Jacques Bergeron (<a href="mailto:jacques.bergeron@dogico.com">jacques.bergeron@dogico.com</a>)</li> | <li>Jacques Bergeron (<a href="mailto:jacques.bergeron@dogico.com">jacques.bergeron@dogico.com</a>)</li> | ||||
<li>Stefan Bodewig (<a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a>)</li> | <li>Stefan Bodewig (<a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a>)</li> | ||||
<li>Patrick Chanezon (<a href="mailto:chanezon@netscape.com">chanezon@netscape.com</a>)</li> | |||||
<li>James Duncan Davison (<a href="mailto:duncan@x180.com">duncan@x180.com</a>)</li> | <li>James Duncan Davison (<a href="mailto:duncan@x180.com">duncan@x180.com</a>)</li> | ||||
<li>Tom Dimock (<a href="mailto:tad1@cornell.edu">tad1@cornell.edu</a>)</li> | <li>Tom Dimock (<a href="mailto:tad1@cornell.edu">tad1@cornell.edu</a>)</li> | ||||
<li>Bill Kelly (<a href="mailto:bill.kelly@softwired-inc.com">bill.kelly@softwired-inc.com</a>)</li> | <li>Bill Kelly (<a href="mailto:bill.kelly@softwired-inc.com">bill.kelly@softwired-inc.com</a>)</li> | ||||
@@ -1660,23 +1661,34 @@ The classpath used contains <code>xyz.jar</code>, and debug information is on. | |||||
Only files under <code>mypackage/p1</code> and <code>mypackage/p2</code> are | Only files under <code>mypackage/p1</code> and <code>mypackage/p2</code> are | ||||
used. Files in the <code>mypackage/p1/testpackage</code> directory are excluded | used. Files in the <code>mypackage/p1/testpackage</code> directory are excluded | ||||
form compilation and copy.</p> | form compilation and copy.</p> | ||||
<hr> | <hr> | ||||
<h2><a name="javadoc">Javadoc/Javadoc2</a></h2> | <h2><a name="javadoc">Javadoc/Javadoc2</a></h2> | ||||
<h3>Description</h3> | <h3>Description</h3> | ||||
<p>Generates code documentation using the javadoc tool.</p> | <p>Generates code documentation using the javadoc tool.</p> | ||||
<p>The source directory will be recursively scanned for Java source files to but | |||||
only those matching the inclusion rules will be passed to the javadoc tool. This | |||||
<p>The source directory will be recursively scanned for Java source files to process | |||||
but only those matching the inclusion rules will be passed to the javadoc tool. This | |||||
allows wildcards to be used to choose between package names, reducing verbosity | allows wildcards to be used to choose between package names, reducing verbosity | ||||
and management costs over time. This task, however, has no notion of | and management costs over time. This task, however, has no notion of | ||||
"changed" files, unlike the <a href="#javac">javac</a> task, but it's | |||||
not used so frequently.</p> | |||||
"changed" files, unlike the <a href="#javac">javac</a> task. This means | |||||
all packages will be processed each time this task is run. In general, however, | |||||
this task is used much less frequently.</p> | |||||
<p>This task works seamlessly between different javadoc versions (1.1 and 1.2), | <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 | with the obvious restriction that the 1.2 attributes will be ignored if run in a | ||||
1.1 VM.</p> | 1.1 VM.</p> | ||||
<p>NOTE: since javadoc calls System.exit(), we cannot run javadoc inside the | |||||
same VM without breaking functionality. For this reason, this task always forks | |||||
the VM. But this is not a performance penalty since javadoc is normally a heavy | |||||
application and must be called just once.</p> | |||||
<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 | |||||
always forks the VM. This overhead is not significant since javadoc is normally a heavy | |||||
application and will be called infrequently.</p> | |||||
<p>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. | |||||
<p>DEPRECATION: the javadoc2 task simply points to the javadoc task and it's | <p>DEPRECATION: the javadoc2 task simply points to the javadoc task and it's | ||||
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">javadoc</a> | versions, you are strongly encouraged to use <a href="#javadoc">javadoc</a> | ||||
@@ -1701,6 +1713,12 @@ instead.</p> | |||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
<td align="center" valign="top">Yes</td> | <td align="center" valign="top">Yes</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">maxmemory</td> | |||||
<td valign="top">Max amount of memory to allocate to the javadoc VM</td> | |||||
<td align="center" valign="top">all</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">sourcefiles</td> | <td valign="top">sourcefiles</td> | ||||
<td valign="top">Space separated list of source files</td> | <td valign="top">Space separated list of source files</td> | ||||
@@ -1714,7 +1732,13 @@ instead.</p> | |||||
<td align="center" valign="top">all</td> | <td align="center" valign="top">all</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">Classpath</td> | |||||
<td valign="top">packageList</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">No</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">classpath</td> | |||||
<td valign="top">Specify where to find user class files</td> | <td valign="top">Specify where to find user class files</td> | ||||
<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> | ||||
@@ -1929,14 +1953,81 @@ instead.</p> | |||||
<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">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">No</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">additionalparam</td> | |||||
<td valign="top">Lets you add additional parameters to the javadoc command line. Useful for doclets</td> | |||||
<td align="center" valign="top">1.2</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
</table> | |||||
<h3>Parameters specified as subelements</h3> | |||||
Two parameters of the Javadoc task may be specified as nested elements of the | |||||
Javadoc task element: link and group. | |||||
When present, there can be any number of each of these elements. | |||||
They perform the same role as the link, linkoffline and | |||||
group attributes. You can use either syntax (or both at once), but with the nested | |||||
elements you can easily specify multiple occurrences of the arguments. | |||||
<h4>link</h4> | |||||
Create link to javadoc output at the given URL | |||||
<h4>Parameters</h4> | |||||
<table width="60%" border="1" cellpadding="2" cellspacing="0"> | |||||
<tr> | |||||
<td valign="top"><b>Attribute</b></td> | |||||
<td valign="top"><b>Description</b></td> | |||||
<td align="center" valign="top"><b>Required</b></td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">href</td> | |||||
<td valign="top">The URL for the external documentation you wish to link to</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">offline</td> | |||||
<td valign="top">True if this link is not available online at the time of | |||||
generating the documentation</td> | |||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">packagelistLoc</td> | |||||
<td valign="top">The location to the directory containing the package-list file for | |||||
the external documentation</td> | |||||
<td align="center" valign="top">Only if the offline attribute is true</td> | |||||
</tr> | |||||
</table> | |||||
<h4>groups</h4> | |||||
Separates packages on the overview page into whatever groups you specify, | |||||
one group per table. | |||||
<table width="60%" border="1" cellpadding="2" cellspacing="0"> | |||||
<tr> | |||||
<td valign="top"><b>Attribute</b></td> | |||||
<td valign="top"><b>Description</b></td> | |||||
<td align="center" valign="top"><b>Required</b></td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">title</td> | |||||
<td valign="top">Title of the group</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">packages</td> | |||||
<td valign="top">List of packages to include in that group</td> | |||||
<td align="center" valign="top">Yes</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Example</h3> | <h3>Example</h3> | ||||
<pre> <javadoc packagenames="com.dummy.test.*" | <pre> <javadoc packagenames="com.dummy.test.*" | ||||
sourcepath="src" | sourcepath="src" | ||||
@@ -1946,8 +2037,13 @@ instead.</p> | |||||
use="true" | use="true" | ||||
windowtitle="Test API" | windowtitle="Test API" | ||||
doctitle="<h1>Test</h1>" | doctitle="<h1>Test</h1>" | ||||
bottom="<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>" | |||||
/></pre> | |||||
bottom="<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>"> | |||||
<group title="Group 1 Packages" packages="com.dummy.test.a*"/> | |||||
<group title="Group 2 Packages" packages="com.dummy.test.b*"/> | |||||
<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> | ||||
<h2><a name="keysubst">KeySubst</a></h2> | <h2><a name="keysubst">KeySubst</a></h2> | ||||
<h3>Description</h3> | <h3>Description</h3> | ||||
@@ -74,7 +74,7 @@ public interface BuildListener extends EventListener { | |||||
* Fired after the last target has finished. This event | * Fired after the last target has finished. This event | ||||
* will still be thrown if an error occured during the build. | * will still be thrown if an error occured during the build. | ||||
* | * | ||||
* @see BuildEvent.getException() | |||||
* @see BuildEvent#getException() | |||||
*/ | */ | ||||
public void buildFinished(BuildEvent event); | public void buildFinished(BuildEvent event); | ||||
@@ -89,7 +89,7 @@ public interface BuildListener extends EventListener { | |||||
* Fired when a target has finished. This event will | * Fired when a target has finished. This event will | ||||
* still be thrown if an error occured during the build. | * still be thrown if an error occured during the build. | ||||
* | * | ||||
* @see BuildEvent.getException() | |||||
* @see BuildEvent#getException() | |||||
*/ | */ | ||||
public void targetFinished(BuildEvent event); | public void targetFinished(BuildEvent event); | ||||
@@ -808,7 +808,6 @@ strLoop: | |||||
/** | /** | ||||
* Adds the array with default exclusions to the current exclusions set. | * Adds the array with default exclusions to the current exclusions set. | ||||
* | * | ||||
* @see #DEFAULTEXCLUDES | |||||
*/ | */ | ||||
public void addDefaultExcludes() { | public void addDefaultExcludes() { | ||||
int excludesLength = excludes == null ? 0 : excludes.length; | int excludesLength = excludes == null ? 0 : excludes.length; | ||||
@@ -0,0 +1,124 @@ | |||||
/* | |||||
* The Apache Software License, Version 1.1 | |||||
* | |||||
* Copyright (c) 1999 The Apache Software Foundation. All rights | |||||
* reserved. | |||||
* | |||||
* Redistribution and use in source and binary forms, with or without | |||||
* modification, are permitted provided that the following conditions | |||||
* are met: | |||||
* | |||||
* 1. Redistributions of source code must retain the above copyright | |||||
* notice, this list of conditions and the following disclaimer. | |||||
* | |||||
* 2. Redistributions in binary form must reproduce the above copyright | |||||
* notice, this list of conditions and the following disclaimer in | |||||
* the documentation and/or other materials provided with the | |||||
* distribution. | |||||
* | |||||
* 3. The end-user documentation included with the redistribution, if | |||||
* any, must include the following acknowlegement: | |||||
* "This product includes software developed by the | |||||
* Apache Software Foundation (http://www.apache.org/)." | |||||
* Alternately, this acknowlegement may appear in the software itself, | |||||
* if and wherever such third-party acknowlegements normally appear. | |||||
* | |||||
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||||
* Foundation" must not be used to endorse or promote products derived | |||||
* from this software without prior written permission. For written | |||||
* permission, please contact apache@apache.org. | |||||
* | |||||
* 5. Products derived from this software may not be called "Apache" | |||||
* nor may "Apache" appear in their names without prior written | |||||
* permission of the Apache Group. | |||||
* | |||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
* SUCH DAMAGE. | |||||
* ==================================================================== | |||||
* | |||||
* This software consists of voluntary contributions made by many | |||||
* individuals on behalf of the Apache Software Foundation. For more | |||||
* information on the Apache Software Foundation, please see | |||||
* <http://www.apache.org/>. | |||||
*/ | |||||
package org.apache.tools.ant; | |||||
import java.util.*; | |||||
import java.io.*; | |||||
/** | |||||
* A Path tokenizer takes a path and returns the components that make up | |||||
* that path. | |||||
* | |||||
* The path can use path separators of either ':' or ';' and file separators | |||||
* of either '/' or '\' | |||||
* | |||||
* @author Conor MacNeill (conor@ieee.org) | |||||
* | |||||
*/ | |||||
public class PathTokenizer { | |||||
/** | |||||
* A tokenizer to break the string up based on the ':' or ';' separators. | |||||
*/ | |||||
StringTokenizer tokenizer; | |||||
/** | |||||
* A String which stores any path components which have been read ahead. | |||||
*/ | |||||
String lookahead = null; | |||||
public PathTokenizer(String path) { | |||||
tokenizer = new StringTokenizer(path, ":;", false); | |||||
} | |||||
public boolean hasMoreTokens() { | |||||
if (lookahead != null) { | |||||
return true; | |||||
} | |||||
return tokenizer.hasMoreTokens(); | |||||
} | |||||
public String nextToken() throws NoSuchElementException { | |||||
if (lookahead != null) { | |||||
String token = lookahead; | |||||
lookahead = null; | |||||
return token; | |||||
} | |||||
else { | |||||
String token = tokenizer.nextToken().trim(); | |||||
if (token.length() == 1 && Character.isLetter(token.charAt(0)) | |||||
&& File.pathSeparator.equals(";") | |||||
&& tokenizer.hasMoreTokens()) { | |||||
// we are on a dos style system so this path could be a drive | |||||
// spec. We look at the next token | |||||
String nextToken = tokenizer.nextToken().trim(); | |||||
if (nextToken.startsWith("\\") || nextToken.startsWith("/")) { | |||||
// we know we are on a DOS style platform and the next path starts with a | |||||
// slash or backslash, so we know this is a drive spec | |||||
token += ":" + nextToken; | |||||
} | |||||
else { | |||||
// store the token just read for next time | |||||
lookahead = nextToken; | |||||
} | |||||
} | |||||
return token; | |||||
} | |||||
} | |||||
} | |||||
@@ -62,7 +62,7 @@ import org.w3c.dom.*; | |||||
* Generates a "log.xml" file in the current directory with | * Generates a "log.xml" file in the current directory with | ||||
* an XML description of what happened during a build. | * an XML description of what happened during a build. | ||||
* | * | ||||
* @see Project#addBuildListener() | |||||
* @see Project#addBuildListener(BuildListener) | |||||
*/ | */ | ||||
public class XmlLogger implements BuildListener { | public class XmlLogger implements BuildListener { | ||||
@@ -75,11 +75,14 @@ import java.util.*; | |||||
* | * | ||||
* @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
* @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a> | * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a> | ||||
* @author Patrick Chanezon <a href="mailto:chanezon@netscape.com">chanezon@netscape.com</a> | |||||
*/ | */ | ||||
public class Javadoc extends Exec { | public class Javadoc extends Exec { | ||||
private String maxmemory = null; | |||||
private String sourcePath = null; | private String sourcePath = null; | ||||
private String additionalParam = null; | |||||
private File destDir = null; | private File destDir = null; | ||||
private File overviewFile = null; | private File overviewFile = null; | ||||
private String sourceFiles = null; | private String sourceFiles = null; | ||||
@@ -106,8 +109,8 @@ public class Javadoc extends Exec { | |||||
private String header = null; | private String header = null; | ||||
private String footer = null; | private String footer = null; | ||||
private String bottom = null; | private String bottom = null; | ||||
private String link = null; | |||||
private String linkoffline = null; | private String linkoffline = null; | ||||
private String link = null; | |||||
private String group = null; | private String group = null; | ||||
private boolean nodeprecated = false; | private boolean nodeprecated = false; | ||||
private boolean nodeprecatedlist = false; | private boolean nodeprecatedlist = false; | ||||
@@ -119,7 +122,18 @@ public class Javadoc extends Exec { | |||||
private File helpfile = null; | private File helpfile = null; | ||||
private String docencoding = null; | private String docencoding = null; | ||||
private Vector compileList = new Vector(10); | private Vector compileList = new Vector(10); | ||||
private String packageList = null; | |||||
private Vector links = new Vector(2); | |||||
private Vector groups = new Vector(2); | |||||
public void setMaxmemory(String src){ | |||||
maxmemory = src; | |||||
} | |||||
public void setadditionalParam(String src){ | |||||
additionalParam = src; | |||||
} | |||||
public void setSourcepath(String src) { | public void setSourcepath(String src) { | ||||
sourcePath = project.translatePath(src); | sourcePath = project.translatePath(src); | ||||
} | } | ||||
@@ -201,15 +215,15 @@ public class Javadoc extends Exec { | |||||
public void setBottom(String src) { | public void setBottom(String src) { | ||||
bottom = src; | bottom = src; | ||||
} | } | ||||
public void setLink(String src) { | |||||
link = src; | |||||
} | |||||
public void setLinkoffline(String src) { | public void setLinkoffline(String src) { | ||||
linkoffline = src; | linkoffline = src; | ||||
} | } | ||||
public void setGroup(String src) { | public void setGroup(String src) { | ||||
group = src; | group = src; | ||||
} | } | ||||
public void setLink(String src) { | |||||
link = src; | |||||
} | |||||
public void setNodeprecated(String src) { | public void setNodeprecated(String src) { | ||||
nodeprecated = Project.toBoolean(src); | nodeprecated = Project.toBoolean(src); | ||||
} | } | ||||
@@ -234,6 +248,78 @@ public class Javadoc extends Exec { | |||||
public void setDocencoding(String src) { | public void setDocencoding(String src) { | ||||
docencoding = src; | docencoding = src; | ||||
} | } | ||||
public void setPackageList(String src) { | |||||
packageList = src; | |||||
} | |||||
public LinkArgument createLink() { | |||||
LinkArgument la = new LinkArgument(); | |||||
links.addElement(la); | |||||
return la; | |||||
} | |||||
public class LinkArgument { | |||||
private String href; | |||||
private boolean offline = false; | |||||
private String packagelistLoc; | |||||
public LinkArgument() { | |||||
} | |||||
public void setHref(String hr) { | |||||
href = hr; | |||||
} | |||||
public String getHref() { | |||||
return href; | |||||
} | |||||
public void setPackagelistLoc(String src) { | |||||
packagelistLoc = src; | |||||
} | |||||
public String getPackagelistLoc() { | |||||
return packagelistLoc; | |||||
} | |||||
public void setOffline(String offline) { | |||||
this.offline = Project.toBoolean(offline); | |||||
} | |||||
public boolean isLinkOffline() { | |||||
return offline; | |||||
} | |||||
} | |||||
public GroupArgument createGroup() { | |||||
GroupArgument ga = new GroupArgument(); | |||||
groups.addElement(ga); | |||||
return ga; | |||||
} | |||||
public class GroupArgument { | |||||
private String title; | |||||
private String packages; | |||||
public GroupArgument() { | |||||
} | |||||
public void setTitle(String src) { | |||||
title = src; | |||||
} | |||||
public String getTitle() { | |||||
return title; | |||||
} | |||||
public void setPackages(String src) { | |||||
packages = src; | |||||
} | |||||
public String getPackages() { | |||||
return packages; | |||||
} | |||||
} | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
if (sourcePath == null && destDir == null ) { | if (sourcePath == null && destDir == null ) { | ||||
@@ -251,6 +337,16 @@ public class Javadoc extends Exec { | |||||
if (classpath == null) | if (classpath == null) | ||||
classpath = System.getProperty("java.class.path"); | classpath = System.getProperty("java.class.path"); | ||||
if(maxmemory != null){ | |||||
if(javadoc1){ | |||||
argList.addElement("-J-mx" + maxmemory); | |||||
} | |||||
else{ | |||||
argList.addElement("-J-Xmx" + maxmemory); | |||||
} | |||||
} | |||||
if ( (!javadoc1) || (sourcePath == null) ) { | if ( (!javadoc1) || (sourcePath == null) ) { | ||||
argList.addElement("-classpath"); | argList.addElement("-classpath"); | ||||
argList.addElement(classpath); | argList.addElement(classpath); | ||||
@@ -358,15 +454,46 @@ public class Javadoc extends Exec { | |||||
argList.addElement("-bottom"); | argList.addElement("-bottom"); | ||||
argList.addElement(bottom); | argList.addElement(bottom); | ||||
} | } | ||||
// add the single link arguments | |||||
if (link != null) { | if (link != null) { | ||||
argList.addElement("-link"); | argList.addElement("-link"); | ||||
argList.addElement(link); | argList.addElement(link); | ||||
} | } | ||||
// add the links arguments | |||||
if (links.size() != 0) { | |||||
for (Enumeration e = links.elements(); e.hasMoreElements(); ) { | |||||
LinkArgument la = (LinkArgument)e.nextElement(); | |||||
if (la.getHref() == null) { | |||||
throw new BuildException("Links must provide the RUL to the external class documentation."); | |||||
} | |||||
if (la.isLinkOffline()) { | |||||
String packageListLocation = la.getPackagelistLoc(); | |||||
if (packageListLocation == null) { | |||||
throw new BuildException("The package list location for link " + la.getHref() + | |||||
" must be provided because the link is offline"); | |||||
} | |||||
argList.addElement("-linkoffline"); | |||||
argList.addElement(la.getHref()); | |||||
argList.addElement(packageListLocation); | |||||
} | |||||
else { | |||||
argList.addElement("-link"); | |||||
argList.addElement(la.getHref()); | |||||
} | |||||
} | |||||
} | |||||
// add the single linkoffline arguments | |||||
if (linkoffline != null) { | if (linkoffline != null) { | ||||
argList.addElement("-linkoffline"); | argList.addElement("-linkoffline"); | ||||
argList.addElement(linkoffline); | argList.addElement(linkoffline); | ||||
} | } | ||||
// add the single group arguments | |||||
// Javadoc 1.2 rules: | // Javadoc 1.2 rules: | ||||
// Multiple -group args allowed. | // Multiple -group args allowed. | ||||
// Each arg includes 3 strings: -group [name] [packagelist]. | // Each arg includes 3 strings: -group [name] [packagelist]. | ||||
@@ -391,6 +518,27 @@ public class Javadoc extends Exec { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
// add the group arguments | |||||
if (groups.size() != 0) { | |||||
String title = null; | |||||
String packages = null; | |||||
GroupArgument ga = null; | |||||
for (int i = 0; i < groups.size(); i++) { | |||||
ga = (GroupArgument)groups.get(i); | |||||
if (ga != null) { | |||||
title = ga.getTitle(); | |||||
packages = ga.getPackages(); | |||||
} | |||||
if (title != null) { | |||||
argList.addElement("-group"); | |||||
argList.addElement(title); | |||||
if (packages != null) { | |||||
argList.addElement(packages); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
if (stylesheetfile != null) { | if (stylesheetfile != null) { | ||||
argList.addElement("-stylesheetfile"); | argList.addElement("-stylesheetfile"); | ||||
@@ -400,6 +548,9 @@ public class Javadoc extends Exec { | |||||
argList.addElement("-helpfile"); | argList.addElement("-helpfile"); | ||||
argList.addElement(helpfile.getAbsolutePath()); | argList.addElement(helpfile.getAbsolutePath()); | ||||
} | } | ||||
if (additionalParam != null) { | |||||
argList.addElement(additionalParam); | |||||
} | |||||
} | } | ||||
if ((packageNames != null) && (packageNames.length() > 0)) { | if ((packageNames != null) && (packageNames.length() > 0)) { | ||||
@@ -425,6 +576,9 @@ public class Javadoc extends Exec { | |||||
} | } | ||||
} | } | ||||
if (packageList != null) { | |||||
argList.addElement("@" + packageList); | |||||
} | |||||
project.log("Javadoc args: " + argList.toString(), "javadoc", project.MSG_VERBOSE); | project.log("Javadoc args: " + argList.toString(), "javadoc", project.MSG_VERBOSE); | ||||
project.log("Javadoc execution", project.MSG_INFO); | project.log("Javadoc execution", project.MSG_INFO); | ||||
@@ -453,20 +607,29 @@ public class Javadoc extends Exec { | |||||
* with the packages found in that path subdirs matching one of the given | * with the packages found in that path subdirs matching one of the given | ||||
* patterns. | * patterns. | ||||
*/ | */ | ||||
private void evaluatePackages(String source, Vector packages, Vector argList) { | |||||
private void evaluatePackages(String sourcePath, Vector packages, Vector argList) { | |||||
project.log("Parsing source files for packages", project.MSG_INFO); | project.log("Parsing source files for packages", project.MSG_INFO); | ||||
project.log("Source dir = " + source, project.MSG_VERBOSE); | |||||
project.log("Source path = " + sourcePath, project.MSG_VERBOSE); | |||||
project.log("Packages = " + packages, project.MSG_VERBOSE); | project.log("Packages = " + packages, project.MSG_VERBOSE); | ||||
Hashtable map = mapClasses(new File(source)); | |||||
Enumeration e = map.keys(); | |||||
while (e.hasMoreElements()) { | |||||
String pack = (String) e.nextElement(); | |||||
for (int i = 0; i < packages.size(); i++) { | |||||
if (matches(pack, (String) packages.elementAt(i))) { | |||||
argList.addElement(pack); | |||||
break; | |||||
Vector addedPackages = new Vector(); | |||||
PathTokenizer tokenizer = new PathTokenizer(sourcePath); | |||||
while (tokenizer.hasMoreTokens()) { | |||||
File source = new File(project.translatePath(tokenizer.nextToken())); | |||||
Hashtable map = mapClasses(source); | |||||
Enumeration e = map.keys(); | |||||
while (e.hasMoreElements()) { | |||||
String pack = (String) e.nextElement(); | |||||
for (int i = 0; i < packages.size(); i++) { | |||||
if (matches(pack, (String) packages.elementAt(i))) { | |||||
if (!addedPackages.contains(pack)) { | |||||
argList.addElement(pack); | |||||
addedPackages.addElement(pack); | |||||
} | |||||
break; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -73,7 +73,6 @@ import org.apache.tools.ant.taskdefs.*; | |||||
/** | /** | ||||
* | * | ||||
* @author dion | * @author dion | ||||
* @version | |||||
*/ | */ | ||||
public class RenameExtensions extends MatchingTask { | public class RenameExtensions extends MatchingTask { | ||||