| <html> |
| |
| <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <title>Ant User Manual</title> |
| </head> |
| |
| <body> |
| |
| <h2><a name="javac">Javac</a></h2> |
| <h3>Description</h3> |
| <p>Compiles a Java source tree.</p> |
| <p>The source and destination directory will be recursively scanned for Java |
| source files to compile. Only Java files that have no corresponding class file |
| or where the class file is older than the java file will be compiled.</p> |
| <p>Note: Ant uses only the names of the source and class files to find |
| the classes that need a rebuild. It will not scan the source and therefor |
| will have no knowledge about nested classes, classes that are named different |
| from the source file and so on.</p> |
| <p>The directory structure of the source tree should follow the package |
| hierarchy.</p> |
| <p>It is possible to refine the set of files that are being compiled/copied. |
| This can be done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, <i>excludesfile</i> and <i>defaultexcludes</i> |
| attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to |
| have included by using patterns. The <i>exclude</i> or <i>excludesfile</i> attribute is used to specify |
| the files you want to have excluded. This is also done with patterns. And |
| finally with the <i>defaultexcludes</i> attribute, you can specify whether you |
| want to use default exclusions or not. See the section on <a |
| href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the |
| inclusion/exclusion of files works, and how to write patterns.</p> |
| <p>It is possible to use different compilers. This can be selected with the |
| "build.compiler" property. Here are the choices:-</p> |
| <ul> |
| <li>classic (the standard compiler of JDK 1.1/1.2) - javac1.1 and |
| javac1.2 can be used as aliases</li> |
| <li>modern (the standard compiler of JDK 1.3/1.4) - javac1.3 and |
| javac1.4 can be used as aliases</li> |
| <li>jikes (the <a |
| href="http://oss.software.ibm.com/developerworks/opensource/jikes/project" target="_top">Jikes</a> |
| compiler)</li> |
| <li>jvc (the Command-Line Compiler from Microsoft's SDK for Java / |
| Visual J++) - microsoft can be used as an alias</li> |
| <li>kjc (the <a href="http://www.dms.at/kopi/" target="_top">kopi</a> |
| compiler)</li> |
| <li>gcj (the gcj compiler from gcc)</li> |
| <li>sj (Symantec java compiler) - symantec can be used as an alias</li> |
| <li>extJavac (run either modern or classic in a JVM of its own)</li> |
| </ul> |
| <p>For JDK 1.1/1.2, classic is the default. For JDK 1.3/1.4, modern is the default. |
| If you wish to use a different compiler interface than those |
| supplied, write a class that implements the CompilerAdapter interface |
| (package org.apache.tools.ant.taskdefs.compilers). Supply the full |
| classname in the "build.compiler" property. |
| </p> |
| <p>The fork attribute overrides the build.compiler setting and expects |
| a JDK1.1 or higher to be set in java.home. |
| </p> |
| <p>This task will drop all entries that point to non-existant |
| files/directories from the CLASSPATH it passes to the compiler.</p> |
| <h3>Parameters</h3> |
| <table 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">srcdir</td> |
| <td valign="top">location of the java files. (See Notes at the end)</td> |
| <td align="center" valign="top">Yes, unless nested <code><src></code> elements are present.</td> |
| </tr> |
| <tr> |
| <td valign="top">destdir</td> |
| <td valign="top">location to store the class files.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">includes</td> |
| <td valign="top">comma-separated list of patterns of files that must be |
| included; all files are included when omitted.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">includesfile</td> |
| <td valign="top">the name of a file that contains |
| include patterns.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">excludes</td> |
| <td valign="top">comma-separated list of patterns of files that must be |
| excluded; no files (except default excludes) are excluded when omitted.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">excludesfile</td> |
| <td valign="top">the name of a file that contains |
| exclude patterns.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">defaultexcludes</td> |
| <td valign="top">indicates whether default excludes should be used |
| (<code>yes</code> | <code>no</code>); default excludes are used when omitted.</td> |
| <td valign="top" align="center">No</td> |
| </tr> |
| <tr> |
| <td valign="top">classpath</td> |
| <td valign="top">the classpath to use.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">bootclasspath</td> |
| <td valign="top">location of bootstrap class files.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">classpathref</td> |
| <td valign="top">the classpath to use, given as a |
| <a href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">bootclasspathref</td> |
| <td valign="top">location of bootstrap class files, given as a |
| <a href="../using.html#references">reference</a> to a PATH defined elsewhere.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">extdirs</td> |
| <td valign="top">location of installed extensions.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">encoding</td> |
| <td valign="top">encoding of source files. (gcj doesn't support |
| this option yet)</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">nowarn</td> |
| <td valign="top">indicates whether -nowarn switch should be passed |
| to the compiler; defaults to <code>off</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">debug</td> |
| <td valign="top">indicates whether source should be compiled with debug |
| information; defaults to <code>off</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">optimize</td> |
| <td valign="top">indicates whether source should be compiled with |
| optimization; defaults to <code>off</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">deprecation</td> |
| <td valign="top">indicates whether source should be compiled with |
| deprecation information; defaults to <code>off</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">target</td> |
| <td valign="top">generate class files for specific VM version (e.g., |
| <code>1.1</code> or <code>1.2</code>).</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">verbose</td> |
| <td valign="top">asks the compiler for verbose output.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">depend</td> <td valign="top">enables dependency-tracking |
| for compilers that support this (jikes and classic)</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">includeAntRuntime</td> |
| <td valign="top">whether to include the Ant run-time libraries; |
| defaults to <code>yes</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">includeJavaRuntime</td> |
| <td valign="top">whether to include the default run-time |
| libraries from the executing VM; defaults to <code>no</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">fork</td> |
| <td valign="top">whether to execute Javac using the JDK compiler externally; |
| defaults to <code>no</code>.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">memoryInitialSize</td> |
| <td valign="top">the initial size of the memory for the underlying VM, if javac is run |
| externally, ignored otherwise; defaults to the standard VM memory setting. |
| (examples: <code>83886080</code>, <code>81920k</code>, or <code>80m</code>)</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">memoryMaximumSize</td> |
| <td valign="top">the maximum size of the memory for the underlying VM, if javac is run |
| externally, ignored otherwise; defaults to the standard VM memory setting. |
| (examples: <code>83886080</code>, <code>81920k</code>, or <code>80m</code>)</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">failonerror</td> <td valign="top"> |
| indicates whether the build will continue even if there are compilation errors; defaults to <code>true</code>. |
| </td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| <tr> |
| <td valign="top">source</td> |
| <td valign="top">Value of the <code>-source</code> command line |
| switch, will be ignored by all implementations except |
| <code>modern</code>, legal values are "1.3" and |
| "1.4" - by default, no <code>-source</code> argument |
| will be used at all.</td> |
| <td align="center" valign="top">No</td> |
| </tr> |
| </table> |
| |
| <h3>Parameters specified as nested elements</h3> |
| <p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and |
| supports all attributes of <code><fileset></code> |
| (<code>dir</code> becomes <code>srcdir</code>) as well as the nested |
| <code><include></code>, <code><exclude></code> and |
| <code><patternset></code> elements.</p> |
| <h4><code>src</code>, <code>classpath</code>, <code>bootclasspath</code> and <code>extdirs</code></h4> |
| <p><code>Javac</code>'s <i>srcdir</i>, <i>classpath</i>, |
| <i>bootclasspath</i> and <i>extdirs</i> attributes are <a |
| href="../using.html#path">path-like structures</a> and can also be set via nested |
| <code><src></code>, |
| <code><classpath></code>, |
| <code><bootclasspath></code> and |
| <code><extdirs></code> elements, respectively.</p> |
| |
| <h3>Examples</h3> |
| <pre> <javac srcdir="${src}" |
| destdir="${build}" |
| classpath="xyz.jar" |
| debug="on" |
| /></pre> |
| <p>compiles all <code>.java</code> files under the <code>${src}</code> |
| directory, and stores |
| the <code>.class</code> files in the <code>${build}</code> directory. |
| The classpath used contains <code>xyz.jar</code>, and debug information is on.</p> |
| <pre> <javac srcdir="${src}" |
| destdir="${build}" |
| includes="mypackage/p1/**,mypackage/p2/**" |
| excludes="mypackage/p1/testpackage/**" |
| classpath="xyz.jar" |
| debug="on" |
| /></pre> |
| <p>compiles <code>.java</code> files under the <code>${src}</code> |
| directory, and stores the |
| <code>.class</code> files in the <code>${build}</code> directory. |
| 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 |
| used. Files in the <code>mypackage/p1/testpackage</code> directory are excluded |
| from compilation.</p> |
| |
| <pre> <javac srcdir="${src}:${src2}" |
| destdir="${build}" |
| includes="mypackage/p1/**,mypackage/p2/**" |
| excludes="mypackage/p1/testpackage/**" |
| classpath="xyz.jar" |
| debug="on" |
| /></pre> |
| |
| <p>is the same as the previous example, with the addition of a second |
| source path, defined by |
| the property <code>src2</code>. This can also be represented using nested |
| <code><src></code> elements as follows:</p> |
| |
| <pre> <javac destdir="${build}" |
| classpath="xyz.jar" |
| debug="on"> |
| <src path="${src}"/> |
| <src path="${src2}"/> |
| <include name="mypackage/p1/**"/> |
| <include name="mypackage/p2/**"/> |
| <exclude name="mypackage/p1/testpackage/**"/> |
| </javac></pre> |
| |
| <p><b>Note:</b> If you are using Ant on Windows and a new DOS window pops up |
| for every use of an external compiler, this may be a problem of the JDK you are using. |
| This problem may occur with all JDKs < 1.2.</p> |
| |
| <p><b>Note:</b> If you wish to compile only source-files located in some packages below a |
| common root you should not include these packages in the srcdir-attribute. Use include/exclude-attributes |
| or elements to filter for these packages. If you include part of your package-structure inside the srcdir-attribute |
| (or nested src-elements) Ant will start to recompile your sources every time you call it.</p> |
| |
| <h3>Jikes Notes</h3> |
| |
| Jikes supports some extra options, which can be set be defining |
| properties prior to invoking the task. The ant developers are aware that |
| this is ugly and inflexible -expect a better solution in the future. All |
| the options are boolean, and must be set to "true" or "yes" to be |
| interpreted as anything other than false; by default |
| build.compiler.warnings is "true" while all others are "false" |
| |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <td valign="top"> |
| build.compiler.emacs |
| </td> |
| <td valign="top"> |
| Enable emacs compatible error messages |
| </td> |
| </tr> |
| <tr> |
| <td valign="top"> |
| build.compiler.warnings<br> |
| <b>This property has been deprecated, use the nowarn attribute |
| instead</b> |
| </td> |
| <td valign="top"> |
| don't disable warning messages |
| </td> |
| </tr> |
| <tr> |
| <td valign="top"> |
| build.compiler.pedantic |
| </td> |
| <td valign="top"> |
| enable pedantic warnings |
| </td> |
| </tr> |
| <tr> |
| <td valign="top"> |
| build.compiler.fulldepend |
| </td> |
| <td valign="top"> |
| enable full dependency checking,<br> |
| "+F" in the jikes manual. |
| </td> |
| </tr> |
| </table> |
| <hr> |
| <p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights |
| Reserved.</p> |
| |
| </body> |
| </html> |
| |