diff options
author | wisberg <wisberg> | 2003-05-05 18:23:06 +0000 |
---|---|---|
committer | wisberg <wisberg> | 2003-05-05 18:23:06 +0000 |
commit | 370e5f6ad4e24f58edad4da82d64450457bdc248 (patch) | |
tree | 114f7a65005a61f3779b465504722ec9f2dfc778 /docs/devGuideDB | |
parent | 5f076ff648f94cd9087cdc107c23615bcee7ff7a (diff) | |
download | aspectj-370e5f6ad4e24f58edad4da82d64450457bdc248.tar.gz aspectj-370e5f6ad4e24f58edad4da82d64450457bdc248.zip |
added ant tasks to the devguide as a chapter (rather than refentry),
converted ajbrowser refentry to chapter (to get subsection TOC and better pagination)
updated ajbrowser slightly, and
updated index page to link accordingly.
NOTE: links to ajc changed
from devguide/rn01re01.html
to devguide/ajc-ref.html
Leaving ajc as refentry is awkward but seems right since
it's a command-line tool.
Diffstat (limited to 'docs/devGuideDB')
-rw-r--r-- | docs/devGuideDB/ajbrowser.xml | 230 | ||||
-rw-r--r-- | docs/devGuideDB/antsupport.xml | 1524 | ||||
-rw-r--r-- | docs/devGuideDB/devguide.xml | 37 |
3 files changed, 1714 insertions, 77 deletions
diff --git a/docs/devGuideDB/ajbrowser.xml b/docs/devGuideDB/ajbrowser.xml index a2e5d79ba..704eb1446 100644 --- a/docs/devGuideDB/ajbrowser.xml +++ b/docs/devGuideDB/ajbrowser.xml @@ -1,63 +1,70 @@ -<refentry> - <refnamediv> - <refname>AspectJ Browser</refname> - - <refpurpose>GUI tool for compiling programs with ajc and navigating the - crosscutting structure</refpurpose> - - </refnamediv> - - <refsect1 id="ajbrowser" xreflabel="AspectJ Browser"> - <title>Overview</title> +<chapter id="ajbrowser" xreflabel="AspectJ Browser"> + <title>AspectJ Browser</title> + <sect1 id="ajbrowser-intro"> + <para> + AJBrowser presents a GUI for compiling programs with ajc + and navigating crosscutting structure. + </para> <para> The AspectJ Browser can edit program source files, compile using the AspectJ compiler - <xref linkend="ajc">ajc</xref>, + <xref linkend="ajc-ref"/> run a program, and graphically navigate the program's crosscutting structure. </para> + <para> Launch the browser from the command line either by typing "ajbrowser" to invoke the script in <literal>{aspectj}/bin</literal> (if AspectJ is installed correctly) or by using the - <literal>aspectjtools.jar</literal> directly: + <literal>aspectjtools.jar</literal> directly, + and specifying no arguments or some number of + build configuration files + (suffix <literal>.lst</literal>): <programlisting> - java -jar aspectj1.1/lib/aspectjtools.jar ... + java -jar aspectj1.1/lib/aspectjtools.jar aspectj1.1/doc/examples/spacewar/debug.lst </programlisting> </para> - </refsect1> + </sect1> - <refsect1> - <title>Program Build Configurations</title> + <sect1> + <title>Building Programs</title> + <sect2> + <title>Build Configurations</title> + <para>A build configuration is a set of files to compile for a + program (and optionally some additional compile arguments). + Because <literal>ajc</literal> requires all sources to be specified + (at least using the <literal>-sourceroots</literal> option), + most users create <literal>.lst</literal> files that list + the files to compile (one argument per line, globbing + permitted - for more details, see <xref linkend="ajc-ref"/>). + </para> <para> - To work with a particular program, point the - AspectJ browser to the program source files - listed in a ".lst" build configuration file. - (Build configuration files are described - in the documentation for - <xref linkend="ajc">ajc</xref>.) - Open a build configuration file from the GUI using - the File menu, "open" item, or by using the + To work with a particular program, select the + corresponding ".lst" build configuration file + from the GUI using the File menu, "open" item, + or by using the "Open Build Configuration" button (<inlinemediaobject> <imageobject> <imagedata fileref="openConfig.gif"/> </imageobject> </inlinemediaobject>). - From the command line - you can also pass any number of ".lst" paths. - (If you pass in any non-".lst" arguments, it will run the - command-line compiler directly.) + + You can populate the build list from the command line + by passing any number of ".lst" paths. + (However, if you pass in any non-".lst" arguments, + it will run the command-line compiler directly.) </para> <para> - You can work with multiple build configurations; + To switch between build configurations, select, add, or remove them using the corresponding toolbar buttons. </para> @@ -65,13 +72,13 @@ <literal>.ajbrowser</literal> file in your HOME directory. Edit these from the GUI by clicking the "Options" button or selecting the Tools menu item "Options...". - This is how you can set classpath, aspectpath, etc. - (ajbrowser, unlike ajc, does not support setting these - options from the ".lst" files.). + This is how to set classpath, aspectpath, etc. + </para> + <para>The following sections walks through a build. </para> - </refsect1> - <refsect1> - <title>Compiling a Program Build Configuration</title> + </sect2> + <sect2> + <title>Compiling a Program Build Configuration</title> <para> To compile click the "Build" button @@ -79,21 +86,33 @@ <imageobject> <imagedata fileref="build.gif"/> </imageobject> - </inlinemediaobject>), or click <ctrl>F11. + </inlinemediaobject>), or + or use the tools menu. + </para> + <para>To build using AspectJ 1.1's incremental mode, + click the <literal>incremental compile</literal> checkbox in + the <literal>AspectJ Build Options</literal> tab + of the <literal>Options</literal> dialog. + Once in incremental mode, you can force a full rebuild + by holding the shift key down when selecting the + build menu item or button. + </para> + <para> You may select from different build configurations in the GUI (see label 1 in the graphic below). (If you get classpath or other errors, set up the global build options as described above.) </para> - <imageobject> - <imagedata fileref="ajbrowser-building.gif"/> - </imageobject> - </refsect1> - - <refsect1> - <title>Navigating the Program Structure</title> - + <imageobject> + <imagedata fileref="ajbrowser-building.gif"/> + </imageobject> + </sect2> + </sect1> + + <sect1> + <title>Navigating Program Structure</title> + <para> Select nodes in the program structure by clicking them (see label 2). If one node is related to one or more other nodes by an association the @@ -102,10 +121,11 @@ below the association. If there is no corresponding source for the link it will appear light-blue. </para> + <imageobject> + <imagedata fileref="ajbrowser-building.gif"/> + </imageobject> - </refsect1> - - <refsect1> + <sect2> <title>Example: Exploring the "Spacewar" sample code </title> <para> <itemizedlist> @@ -134,7 +154,7 @@ shows up as in label 4. </para> - <para>Note: If you did not install in the default location, the + <para>Note: If you did not set up your classpath, the compile will fail with a message that you need to install aspectjrt.jar on your compile classpath. To do that, select "Tools -> Options" or click the "Options" button @@ -144,8 +164,12 @@ </imageobject> </inlinemediaobject>). Click the <literal>Build Options</literal> tab to view the Build Paths pane. Edit the classpath entry to use your - install location, ok the dialog, and retry the compile. - + install location. For example, if you ran from the base Aspectj + directory, the classpath need only include + <literal>lib/aspectjrt.jar</literal> (though the browser may populate + the classpath with the bootclasspath and classpath initially.) + Be sure to use the + <literal>lib/aspectjrt.jar</literal> that came with the browser. </para> <para> @@ -250,8 +274,108 @@ </listitem> </itemizedlist> </para> - </refsect1> -</refentry> + </sect2> + </sect1> + <sect1> + <title>Running Programs</title> + <para> + The browser supports a limited form of running compiled programs. + To run programs that have been built, click the run button + or select one of the run menu items in the project menu. + You can run in the same VM or spawn a new process; + the latter is generally better for GUI programs. + </para> + <para>Both require that any classpath you set be specified + using platform-specific paths and path separators (the + compiler might be more tolerant). + Output and error streams will be + merged into the streams of the browser (using separate + threads, so it may take a few seconds for the pipe + threads to gain control.) Errors should + be detected and displayed in a dialog. + </para> + <para> + There GUI does not support killing a running program, + so if your program might hang, + be sure to save your files since you may need to + kill the browser itself to kill its child processes. + </para> + </sect1> + + <sect1 id="ajbrowser-problems"> + <title>Isolating problems running the AspectJ browser</title> + + <para> + If you have problems with the browser not solved by the documentation, + please try to see if you have the same problems when running ajc + directly on the command line. + </para> + <itemizedlist> + <listitem><para> + If the problem occurs on the command line also, then the problem + is not in the browser. + (It may be in the compiler; please send bug reports.) + </para></listitem> + <listitem><para> + If the problem does not occur on the command line, then it may + lie in the parameters you are supplying in the build options. + </para></listitem> + <listitem><para> + If the build options look correct and the problem only occurs + when building from the browser, then please submit a bug report. + </para></listitem> + </itemizedlist> + + <sect2 id="ajbrowser-knownProblems"> + <title>Known issues with the AspectJ browser</title> + <para> + For the most up-to-date information on known problems, + see the + <ulink url="http://dev.eclipse.org/bugs">bug database</ulink> + for unresolved + <ulink url="http://dev.eclipse.org/bugs/buglist.cgi?&product=AspectJ&component=Compiler&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED"> + compiler bugs + </ulink> or + <ulink url="http://dev.eclipse.org/bugs/buglist.cgi?&product=AspectJ&component=IDE&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED"> + IDE bugs + </ulink>. + </para> + <para> + <itemizedlist> + <listitem><para> + Memory and forking: Users email most about the browser task running + out of memory. + This is not a problem with the browser; some compiles take a lot of + memory, often more than similar compiles using javac. + The browser does not support forking, so the only solution is to + edit the java command line or script that launches the browser + to add memory. + </para></listitem> + <listitem><para> + Editing build configuration files: this is not currently supported. + </para></listitem> + <listitem><para> + Key bindings: these do not seem to work on some machines. + </para></listitem> + </itemizedlist> + </para> + </sect2> + <sect2 id="ajbrowser-feedback"> + <title>AspectJ browser questions and bugs</title> + <para> + You can send email to + <ulink url="mailto:aspectj-users@dev.eclipse.org"> + aspectj-users@dev.eclipse.org</ulink>. + (Do join the list to participate!) + We also welcome any bug reports, patches, and feature requests; + you can submit them to the bug database at + <ulink url="http://dev.eclipse.org/bugs"> + http://dev.eclipse.org/bugs</ulink> + using the AspectJ product and IDE component. + </para> + </sect2> + </sect1> +</chapter> <!-- Local variables: --> <!-- fill-column: 79 --> diff --git a/docs/devGuideDB/antsupport.xml b/docs/devGuideDB/antsupport.xml index 1b97968aa..9d5a4591a 100644 --- a/docs/devGuideDB/antsupport.xml +++ b/docs/devGuideDB/antsupport.xml @@ -1,20 +1,1510 @@ -<refentry> - <refnamediv> - <refname>Ant Support</refname> - <refpurpose>Support of Ant</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <cmdsynopsis> - <command>ant </command> - </cmdsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - <para></para> - </refsect1> -</refentry> +<chapter id="antTasks" xreflabel="AspectJ Ant Tasks"> + + <title>AspectJ Ant Tasks</title> + + <sect1 id="antTasks-intro"> + <title>Introduction</title> + + <para> + AspectJ contains a compiler, ajc, that can be run from Ant. + Included in the aspectjtools.jar are Ant binaries to support three + ways of running the compiler: + <orderedlist> + <listitem> + <para> + <xref linkend="antTasks-iajc"/>, + a task to run the new AspectJ 1.1 compiler, + which supports all the eclipse and ajc options, including incremental mode. + </para> + </listitem> + <listitem> + <para> + <xref linkend="antTasks-adapter"/>, + an adapter class to run the new compiler using Javac tasks + by setting the build.compiler property + </para> + </listitem> + <listitem> + <para> + <xref linkend="antTasks-ajc"/>, + a task to run build scripts compatible with the AspectJ 1.0 tasks + </para> + </listitem> + </orderedlist> + </para> + + <para> + This describes how to install and use the tasks and the adapter. + For an example Ant script, see + <ulink url="../examples/build.xml">examples/build.xml</ulink>. + </para> + </sect1> + + <sect1 id="antTasks-install" xreflabel="Installing Ant Tasks"> + <title>Installing Ant Tasks</title> + <para> + Install Jakarta Ant 1.5.1: + Please see the official Jakarta Ant website for more information + and the 1.5.1 distribution. This release is source-compatible + with Ant 1.3 and Ant 1.4, but the task sources must be + compiled with those versions of the Ant libraries to be used + under those versions of Ant. + Sources are available under the Common Public License v. 1.0 + at <ulink url="http://eclipse.org/aspectj">http://eclipse.org/aspectj</ulink>. + </para> + <para> + In Ant, third-party tasks can be declared using a taskdef entry in + the build script, to identify the name and classes. + When declaring a task, include the aspectjtools.jar either in the + taskdef classpath or in ${ANT_HOME}/lib where it will be added + to the system class path by the ant script. + You may specify the task script names directly, + or use the "resource" attribute to specify the default names: + </para> + <programlisting> + <![CDATA[ + <taskdef + resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"> +]]> + </programlisting> + + <para> + The current resource file retains the name "ajc" for the Ajc10 task, + and uses "iajc" for the AspectJ 1.1 task. + </para> + <para> + For more information on using Ant, please refer to Jakarta's + documentation on integrating user-defined Ant tasks into builds. + </para> + + </sect1> + <!-- . . . . . . . . . . . . . . . . . . . . . . . . . . . iajc --> + <sect1 id="antTasks-iajc" xreflabel="AjcTask (iajc)"> + <title>AjcTask (iajc)</title> + <para> + This task uses the AspectJ 1.1 compiler ajc. + The AspectJ compiler can be used like Javac to compile Java sources, + but it can also compile AspectJ sources or weave binary aspects + with Java bytecode. + It can run in normal "batch" mode or in an "incremental" mode, + where it only recompiles files it has to revisit. + For more information on ajc, see <xref linkend="ajc-ref"/>. + </para> + <para> + Beyond the normal ajc 1.1 compiler options, this task also supports + an experimental option for an incremental "tag" file, and it + can copy resources from source directories or + input jars to the output jar or directory. + </para> + + <para> + This task is named iajc now to avoid conflict with the 1.0 task ajc, + but the name may change to ajc in the future. + </para> + + <sect2 id="antTasks-iajc-options" xreflabel="AjcTask (iajc) Options"> + <title>AjcTask (iajc) Options</title> + <para> + The following tables list the supported parameters. + For any parameter specified as a Path, a single path can be + specified directly as an attribute, + multiple paths can be specified using a nested element of + the same name, and a common path can be reused by defining it as a + global and passing the id to the corresponding {name}ref attribute. + See <xref linkend="antTasks-iajc-paths"/> + below for more information. + </para> + <para> + Most attributes and nested elements are optional. + The compiler requires that the same version of aspectjrt.jar + be specified on the classpath, and that some sources be + be specified + (using one or more of + <literal>sourceroots</literal> + <literal>injars</literal> + <literal>argfiles</literal> and + <literal>srcdir</literal> (with patterns)). + When in incremental mode, only + <literal>sourceroots</literal> may be specified. + </para> + <para>Boolean parameters default to <literal>false</literal> + unless otherwise stated. + </para> + + <!-- . . . . . . . . . . . . . . . . iajc options table --> + <table> + <title>AjcTask (iajc) options for specifying sources</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>argfiles, argfilesRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + An argument file contains a list of arguments read by the compiler. + Each line is read into one element of the argument array + and may include another argfile by reference. + </para></entry> + </row> + <row> + <entry><para>sourceRoots, sourceRootsRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + Directories containing source files (ending with .java or .aj) to compile. + </para></entry> + </row> + <row> + <entry><para>srcdir + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + Base directory of sources to compile, assuming there are + TODO link nested elements + for includes or excludes. This uses the Ant process + for matching .java files and is not compatible with incremental + mode. Unless using filters to limit the sources included, + use sourceroots instead. + </para></entry> + </row> + <row> + <entry><para>injars, injarsRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + Input zip files with .class file entries for bytecode weaving. + </para></entry> + </row> + <row> + <entry><para>classpath, classpathRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + The classpath used by the sources being compiled. + When compiling aspects, include the same version of the + <literal>aspectjrt.jar</literal>. + </para></entry> + </row> + <row> + <entry><para>bootclasspath, bootclasspathRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + The bootclasspath specified types to use instead of the + invoking VM's when seeking types during compilation. + </para></entry> + </row> + <row> + <entry><para>extDirs, extDirsRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + The extension directories to use instead of those in the + invoking VM when seeking types during compilation. + </para></entry> + </row> + <row> + <entry><para>aspectPath, aspectPathRef + (<xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + Similar to classpath, aspectpath contains read-only, + binary aspect libraries. + Unlike classpath, it only accepts jar/zip files, + not directories. + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + <table> + <title>AjcTask (iajc) options for specifying output</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>destDir + </para></entry> + <entry><para> + The directory in which to place the generated class files. + Conflicts with outjar. + </para></entry> + </row> + <row> + <entry><para>outJar + </para></entry> + <entry><para> + The zip file in which to place the generated output class files. + Conflicts with destdir. + </para></entry> + </row> + <row> + <entry><para>outJar + </para></entry> + <entry><para> + Copy all non-.class files from input jar(s) to the output jar or destination + directory after the compile (or incremental compile) completes. + </para></entry> + </row> + <row> + <entry><para>sourceRootCopyFilter + </para></entry> + <entry><para> + When set, copy all files from the sourceroot directories to the output jar + or destination directory except those specified in the filter pattern. + The pattern should be compatible with an Ant fileset excludes filter; + when using this, most developers pass + <literal>**/CVS/*,**/*.java</literal> to exclude any CVS directories + or source files. + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + <table> + <title>AjcTask (iajc) options for specifying compiler behavior</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>fork + </para></entry> + <entry><para> + Run process in another VM (usually to specify memory or avoid locking any + jar files used on the classpath). + When set, this requires + <literal>aspectjtools.jar</literal> + be on the system/Ant classpath, and only uses the aspectjtools.jar + to invoke the compiler (so nothing else on the system/Ant classpath + is included implicitly in the compiler/user classpath). + </para></entry> + </row> + <row> + <entry><para>maxmem + </para></entry> + <entry><para> + The maximum memory to use for the new VM when fork is true. + Values should have the same form as accepted by the VM, e.g., "128m". + </para></entry> + </row> + <row> + <entry><para>tagfile + </para></entry> + <entry><para> + incremental mode: Build once, then recompile only required source + files when user provides input. + Requires that source files be specified only using sourceroots. + </para></entry> + </row> + <row> + <entry><para>tagfile + </para></entry> + <entry><para> + incremental mode: Build once, then recompile only required source + files when the tag file is updated, finally exiting when tag file + is deleted (also requires and only permits sourceroots). + </para></entry> + </row> + <row> + <entry><para>X + </para></entry> + <entry><para> + Set experimental option(s), using comma-separated list of accepted options + (unlisted here). Options should not contain the leading X. + XLint options should be specified using the xlint... entries. + </para></entry> + </row> + <row> + <entry><para>Xnoweave + </para></entry> + <entry><para> + Experimental option to produce binaries that can only be used as input + for the -injars option. + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + <table> + <title>AjcTask (iajc) options for specifying compiler side-effects and messages</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>emacssym + </para></entry> + <entry><para> + Whether to emit <literal>.ajesym</literal> symbol files for Emacs support. + </para></entry> + </row> + <row> + <entry><para>verbose + </para></entry> + <entry><para> + Whether to emit compiler status messages during the compile. + </para></entry> + </row> + <row> + <entry><para>Xlistfileargs + </para></entry> + <entry><para> + Whether to emit list of file arguments during + the compile (but behaves now like verbose). + </para></entry> + </row> + <row> + <entry><para>version + </para></entry> + <entry><para> + If true, do not compile - just print AspectJ version. + </para></entry> + </row> + <row> + <entry><para>help + </para></entry> + <entry><para> + If true, just print help for the command-line compiler. + </para></entry> + </row> + <row> + <entry><para>Xlintwarnings + </para></entry> + <entry><para> + Same as <literal>xlint:warning</literal>: + if enabled, set default level of all language + usage messages to warning. + </para></entry> + </row> + <row> + <entry><para>Xlint + </para></entry> + <entry><para> + Specify default level of all language usage messages to one of + (<literal>error warning ignore]</literal>. + </para></entry> + </row> + <row> + <entry><para>XlintFile + </para></entry> + <entry><para> + Specify property file containing <literal>name:level</literal> associations + setting level for language messages emitted during compilation. + Any levels set override the default associations in + <literal>org/aspectj/weaver/XLintDefault.properties</literal>. + </para></entry> + </row> + <row> + <entry><para>failonerror + </para></entry> + <entry><para> + Whether the build continues notwithstanding compile errors. + Defaults to <literal>true</literal>. + </para></entry> + </row> + <row> + <entry><para>messageHolderClass + </para></entry> + <entry><para> + Specify a class to use as the message holder for the compile process. + The entry must be a fully-qualified name of a class resolveable from + the task classpath complying with the + <literal>org.aspectj.bridge.IMessageHolder</literal> interface + and having a public no-argument constructor. + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + + <table> + <title>AjcTask (iajc) options for specifying Eclipse compiler options</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>nowarn + </para></entry> + <entry><para> + Same as <literal>warn:none</literal>. + </para></entry> + </row> + <row> + <entry><para>deprecation + </para></entry> + <entry><para> + Same as <literal>warn:deprecation</literal> + </para></entry> + </row> + <row> + <entry><para>warn + </para></entry> + <entry><para> + One or more comma-separated warning specifications from + [<literal>constructorName packageDefaultMethod deprecation, + maskedCatchBlocks unusedLocals unusedArguments, + unusedImports syntheticAccess assertIdentifier</literal>]. + </para></entry> + </row> + <row> + <entry><para>debug + </para></entry> + <entry><para> + Same as <literal>debug:lines,vars,source</literal> + </para></entry> + </row> + <row> + <entry><para>debugLevel + </para></entry> + <entry><para> + One or more comma-separated debug specifications from + [<literal>lines vars source</literal>]. + </para></entry> + </row> + <row> + <entry><para>PreserveAllLocals + </para></entry> + <entry><para> + Code gen preserves all local variables (for debug purposes). + </para></entry> + </row> + <row> + <entry><para>noimporterror + </para></entry> + <entry><para> + No errors for unresolved imports. + </para></entry> + </row> + <row> + <entry><para>referenceinfo + </para></entry> + <entry><para> + Compute reference info. + </para></entry> + </row> + <row> + <entry><para>log + </para></entry> + <entry><para> + File to log compiler messages to. + </para></entry> + </row> + <row> + <entry><para>encoding + </para></entry> + <entry><para> Default source encoding format + (per-file encoding not supported in Ant tasks). + </para></entry> + </row> + <row> + <entry><para>proceedOnError + </para></entry> + <entry><para> + Keep compiling when error, dumping class files with problem methods. + </para></entry> + </row> + <row> + <entry><para>progress + </para></entry> + <entry><para> + Show progress (requires log). + </para></entry> + </row> + <row> + <entry><para>time + </para></entry> + <entry><para> + Display speed information. + </para></entry> + </row> + <row> + <entry><para>target + </para></entry> + <entry><para> + Specify target class file format (one of + [<literal>1.1 1.2</literal>]. + Defaults to 1.1 class file. + </para></entry> + </row> + <row> + <entry><para> + </para></entry> + <entry><para> + Set source compliance level to one of + [<literal>1.3 1.4</literal>] + (e.g., no import from default package in 1.4). + Defaults to 1.3 compliance level. + </para></entry> + </row> + <row> + <entry><para>source + </para></entry> + <entry><para> + Set source assertion mode to one of + [<literal>1.3 1.4</literal>]. + Default depends on compliance mode. + </para></entry> + </row> + <row> + <entry><para> + </para></entry> + <entry><para> + </para></entry> + </row> + <row> + <entry><para> + </para></entry> + <entry><para> + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + + <!-- bug Specifying sources morerows and rotate are failing + <table> + <title>AjcTask (iajc) options</title> + <tgroup cols="3"> + <thead> + <row> + <entry></entry> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row><entry morerows="7" rotate="1"><para> + Specifying sources + </para></entry></row> + <row><entrytbl spanname="both"> + <tbody><row> + <entry><para>argfiles, argfilesRef + <xref linkend="antTasks-iajc-paths"/>) + </para></entry> + <entry><para> + An argument file contains a list of arguments read by the compiler. + Each line is read into one element of the argument array + and may include another argfile by reference. + </para></entry> + </row></tbody> + </entrytbl></row> + </tbody> + </tgroup> + </table> + --> + <!-- bug Specifying sources spanname is failing + <table> + <title>AjcTask (iajc) options</title> + <tgroup cols="2"> + <colspec colnum="1" colname="option" colwidth="4*"/> + <colspec colnum="2" colname="description" colwidth="1*"/> + <spanspec spanname="both" namest="option" nameend="description"/> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row><entry spanname="both"><bold>Specifying sources</bold> + </entry></row> + <row><entrytbl spanname="both"> + <tbody><row> + <entry spanname="option"> + argfiles, argfilesRef + <xref linkend="antTasks-iajc-paths"/>) + </entry> + <entry spanname="description"><para> + An argument file contains a list of arguments read by the compiler. + Each line is read into one element of the argument array + and may include another argfile by reference. + </para></entry> + </row></tbody> + </entrytbl></row> + </tbody> + </tgroup> + </table> + --> + <!-- . . . . . . . . . . . . . . . . iajc options table --> + </sect2> + + <sect2> + <title>AjcTask parameters specified as nested elements</title> + <para> + This task forms an implicit FileSet and supports all attributes of + <literal><fileset></literal> (dir becomes srcdir) as well as + the nested + <literal><include></literal>, + <literal><exclude></literal>, and + <literal><patternset></literal> elements + as described in <xref linkend="antTasks-ajc-nested"/>. + These can be used to specify source files. However, we recommend + using sourceRoots to specify source directories unless using + filters to exclude some files from compilation. + </para> + </sect2> + + <sect2 id="antTasks-iajc-paths" xreflabel="Path"> + <title>AjcTask Path-like Structures</title> + <para> + Some parameters are path-like structures containing one or more + elements; these are + <literal>sourceroots</literal>, + <literal>argfiles</literal>, + <literal>injars</literal>, + <literal>classpath</literal>, and + <literal>aspectpath</literal>. + In all cases, these may be specified as nested elements, something + like this: + </para> + <programlisting> + <![CDATA[ + <iajc {attributes..} /> + <{name}> + <pathelement path="{first-location}"/> + <pathelement path="{second-location}"/> + ... + <{name}> + ... + </iajc> +]]> + </programlisting> + <para> + As with other Path-like structures, they may be defined elsewhere + and specified using the refid attribute: + </para> + <programlisting> + <![CDATA[ + <path id="aspect.path"> + <pathelement path="${home}/lib/persist.jar"/> + <pathelement path="${home}/lib/trace.jar"/> + </path> + ... + <iajc {attributes..} /> + <aspectpath refid="aspect.path"/> + ... + </iajc> +]]> + </programlisting> + <para> + The task also supports an attribute <literal>{name}ref</literal> + for each such parameter. E.g., for <literal>aspectpath</literal>: + </para> + <programlisting> + <![CDATA[ + <iajc {attributes..} aspectpathref="aspect.path"/> +]]> + </programlisting> + </sect2> + + <sect2 id="antTasks-iajc-sample" xreflabel="Sample of iajc task"> + <title>Sample of iajc task</title> + <para> + A minimal build script defines the task and runs it, specifying the sources: + </para> + <programlisting> + <![CDATA[ +<project name="simple-example" default="compile" > + <taskdef + resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"> + <classpath> + <pathelement location="${home.dir}/tools/aspectj/lib/aspectjtools.jar"/> + </classpath> + </taskdef> + + <target name="compile" > + <iajc sourceroots="${home.dir}/ec/project/src" /> + </target> +</project> +]]> + </programlisting> + <para> + Below is script with most everything in it. The compile process... + </para> + <orderedlist> + <listitem> + <para>Runs in incremental mode, recompiling when the user hits return; + </para> + </listitem> + <listitem> + <para>Reads all the sources from two directories; + </para> + </listitem> + <listitem> + <para>Reads extrinsic module bytecode as input jar for weaving; + </para> + </listitem> + <listitem> + <para>Uses a binary aspect library for persistence; + </para> + </listitem> + <listitem> + <para>Outputs to an application jar; and + </para> + </listitem> + <listitem> + <para> + </para>Copies resources from the input jar and source directories into the application jar. + </listitem> + </orderedlist> + <para> + When this target is built, the compiler will build once and then + wait for input from the user. + Messages are printed as usual. + When the user has quit, then this runs the application. + </para> + + <programlisting> + <![CDATA[ + <target name="build-test" > + <iajc outjar="${home.dir}/output/application.jar" + injars="${home.dir}/build/module.jar" + copyInjars="true" + sourceRootCopyFilter="**/CVS/*,**/*.java" + incremental="true" > + <sourceroots> + <pathelement location="${home.dir}/ec/project/src"/> + <pathelement location="${home.dir}/ec/project/testsrc"/> + </sourceroots> + <aspectpath> + <pathelement location="${home.dir}/ec/int/persist.jar"/> + </aspectpath> + <classpath> + <pathelement location="${home.dir}/tools/aspectj/lib/aspectjrt.jar"/> + </classpath> + </iajc> + + <java classname="org.smart.app.Main"> + <classpath> + <pathelement location="${home.dir}/tools/aspectj/lib/aspectjrt.jar"/> + <pathelement location="${home.dir}/ec/int/persist.jar"/> + <pathelement location="${home.dir}/output/application.jar"/> + </classpath> + </java> + </target> +]]> + </programlisting> + <para> + For an in-depth example of a build script, + see <ulink url="../examples/build.xml"> + ../examples/build.xml</ulink>. + </para> + </sect2> + + <sect2> + <title>Programmatically handling compiler messages</title> + <para> + Users may specify a message holder to which the compiler will pass + all messages as they are generated. This will override all of the + normal message printing, but does not prevent the task from failing + if exceptions were thrown or if failonerror is true and the compiler + detected errors in the sources. + </para> + <para> + Handling messages programmatically could be useful when using the + compiler to verify code. If aspects consist of declare [error|warning], + then the compiler can act to detect invariants in the code being + processed. For code to compare expected and actual messages, see the + AspectJ testing module (which is not included in the binary + distribution). + </para> + </sect2> + </sect1> + + <!-- . . . . . . . . . . . . . . . . . . . . . . . . . . . adapter --> + <sect1 id="antTasks-adapter" xreflabel="Ajc11CompilerAdapter (javac)"> + <title>Ajc11CompilerAdapter (javac)</title> + <para> + This CompilerAdapter can be used in javac task calls by setting the + <literal>build.compiler</literal> property. + This enables users to to easily switch between the Javac and AspectJ + compilers. + However, the Javac task's pruning of source files prevents the + adapter from doing a correct compile in some cases, + so use AjcTask where possible. + </para> + <sect2 id="antTasks-adapter-sample" xreflabel="Sample of compiler adapter"> + <title>Sample of compiler adapter</title> + <para> + To build using the adapter, put the + <literal>aspectjtools.jar</literal> + on the system/ant classpath (e.g., in + <literal>${ANT_HOME}/lib</literal>) + and define the + <literal>build.compiler</literal> + property as the fully-qualified name of the class, + <literal>org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter</literal>. + </para> + <para> + The AspectJ compiler should run for any compile using the Javac task + (for options, see the Ant documentation for the Javac task). + For example, the call below passes all out-of-date source files in the + <literal>src/org/aspectj</literal> subdirectories to the + <literal>ajc</literal> command along with the destination directory: + </para> + <programlisting> + <![CDATA[ +-- command: + + cp aspectj1.1/lib/aspectjtools.jar ant/lib + ant/bin/ant -Dbuild.compiler=org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter ... + +-- task invocation in the build script: + + <javac srcdir="src" includes="org/aspectj/**/*.java" destdir="dest" /> +]]> + </programlisting> + + <para> + To pass ajc-specific arguments, use a compilerarg entry. + </para> + <programlisting> + <![CDATA[ +-- command + + Ant -Dbuild.compiler=org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter + +-- build script + + <property name="ajc" + value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/> + + <javac srcdir="src" includes="org/aspectj/**/*.java" destdir="dest" > + <compilerarg compiler="${ajc}" line="-argfile src/args.lst"/> + <javac/> +]]> + </programlisting> + </sect2> + + <sect2 id="antTasks-adapter-options" xreflabel="Compiler adapter compilerarg options"> + <title>Compiler adapter compilerarg options</title> + <para> + The adapter supports any ajc command-line option passed using compilerarg, + as well as the following options available only in AjcTask. + Find more details on the following options in <xref linkend="antTasks-iajc"/>. + </para> + <itemizedlist> + <listitem><para> + <literal>-Xmaxmem</literal>: + set maximum memory for forking (also settable in javac). + </para></listitem> + <listitem><para> + <literal>-Xlistfileargs</literal>: + list file arguments (also settable in javac). + </para></listitem> + <listitem><para> + <literal>-Xfailonerror</literal>: + throw BuildException on compiler error (also settable in javac). + </para></listitem> + <listitem><para> + <literal>-Xmessageholderclass</literal>: + specify fully-qualified name of class to use as the message holder. + </para></listitem> + <listitem><para> + <literal>-Xcopyinjars</literal>: + copy resources from any input jars to output + </para></listitem> + <listitem><para> + <literal>-Xsourcerootcopyfilter {filter}</literal>: + copy resources from source directories to output (minus files specified in filter) + </para></listitem> + <listitem><para> + <literal>-Xtagfile {file}</literal>: + use file to control incremental compilation + </para></listitem> + <listitem><para> + <literal>-Xsrcdir {dir}</literal>: + add to list of ajc source roots (all source files will be included). + </para></listitem> + </itemizedlist> + <para> + Special considerations when using Javac and compilerarg: + </para> + <itemizedlist> + <listitem><para> + The names above may differ slightly from what you might expect + from AjcTask; use these forms when specifying compilerarg. + </para></listitem> + </itemizedlist> + <itemizedlist> + <listitem><para> + By default the adapter will mimic the Javac task's copying of resource + files by specifying + <literal>"**/CVS/*,**/*.java,**/*.aj"</literal> + for the sourceroot copy filter. + To change this behavior, supply your own value + (e.g., <literal>"**/*"</literal> to copy nothing). + </para></listitem> + </itemizedlist> + <itemizedlist> + <listitem><para> + Warning - use build.compiler.clean to get all files, when available, + because Javac prunes the source file list of "up-to-date" source files + based on the timestamps of corresponding .class files + (and will not compile if no sources are out of date). + This is wrong for ajc which requires all the files for each compile + and which may refer indirectly to sources using argument files. + </para> + <para> + To work around this, set the global property + <literal>build.compiler.clean</literal>. + This tells the compiler adapter to delete all .class files + in the destination directory and re-execute the javac + task so javac can recalculate the list of source files. e.g., + </para> + <programlisting> + <![CDATA[ + Ant -Dbuild.compiler=org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter + -Dbuild.compiler.clean=anything ... +]]> + </programlisting> + <para> + Caveats to consider when using this global + <literal>build.compiler.clean</literal> property: + </para> + <orderedlist> + <listitem><para> + If javac believes there are no out-of-date source files, + then the adapter is never called and cannot clean up, + and the "compile" will appear to complete successfully + though it did nothing. + </para></listitem> + <listitem><para> + Cleaning will makes stepwise build processes fail if + they depend on the results of the prior compilation being + in the same directory, since cleaning deletes all .class files. + </para></listitem> + <listitem><para> + This clean process only permits one compile process at a + time for each destination directory because it tracks + recursion by writing a tag file to the destination directory. + </para></listitem> + <listitem><para> + When running incrementally, the clean happens only before + the initial compile. + </para></listitem> + </orderedlist> + </listitem> + </itemizedlist> + </sect2> + </sect1> + + <!-- . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajc10 --> + <sect1 id="antTasks-ajc" xreflabel="Ajc10 (ajc)"> + <title>Ajc10 (ajc)</title> + <para> + This task handles the same arguments as those used by the AspectJ 1.0 task. + This should permit those with existing build scripts using the Ajc Ant + task to continue using the same scripts when compiling with 1.1. + This will list any use of options no longer supported in 1.1 + (e.g., <literal>lenient, strict, workingdir, preprocess, usejavac</literal>,...), + and does not provide access to the new features of AspectJ 1.1. + (Developers using AspectJ 1.1 only should upgrade their scripts + to use AjcTask instead.) + </para> + + <sect2 id="antTasks-ajc-options" xreflabel="Ajc10 (ajc) Options"> + <title>Ajc10 (ajc) Options</title> + <para> + </para> + <para> + Most attributes and nested elements are optional. + The compiler requires that the same version of aspectjrt.jar + be specified on the classpath, and that some sources be + be specified + (using one or more of + <literal>argfiles</literal> and + <literal>srcdir</literal> (with patterns)). + </para> + <para>Boolean parameters default to <literal>false</literal> + unless otherwise stated. + </para> + + <!-- . . . . . . . . . . . . . . . . ajc options table --> + <table> + <title>AjcTask (ajc) options for specifying sources</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>srcdir + </para></entry> + <entry><para> + The base directory of the java files. + See + </para></entry> + </row> + <row> + <entry><para>destdir + </para></entry> + <entry><para> + The target directory for the output .class files + </para></entry> + </row> + <row> + <entry><para>includes + </para></entry> + <entry><para> + Comma-separated list of patterns of files that must be included. + No files are included when omitted. + </para></entry> + </row> + <row> + <entry><para>includesfile + </para></entry> + <entry><para> + The path to a file containing include patterns. + </para></entry> + </row> + <row> + <entry><para>excludes + </para></entry> + <entry><para> + Comma-separated list of patterns of files that must be excluded. + No files (except default excludes) are excluded when omitted. + </para></entry> + </row> + <row> + <entry><para>excludesfile + </para></entry> + <entry><para> + The path to a file containing exclude patterns. + </para></entry> + </row> + <row> + <entry><para>defaultexcludes + </para></entry> + <entry><para> + If true, then default excludes are used. + Default excludes are used when omitted + (i.e., defaults to <literal>true</literal>). + </para></entry> + </row> + <row> + <entry><para>classpath, classpathref + </para></entry> + <entry><para> + The classpath to use, + optionally given as a reference to a classpath Path + element defined elsewhere. + </para></entry> + </row> + <row> + <entry><para>bootclasspath, bootclasspathref + </para></entry> + <entry><para> + The bootclasspath to use, + optionally given as a reference to a bootclasspath Path + element defined elsewhere. + </para></entry> + </row> + <row> + <entry><para>extdirs + </para></entry> + <entry><para> + Paths to directories containting installed extensions. + </para></entry> + </row> + <row> + <entry><para>debug + </para></entry> + <entry><para> + If true, emit debug info in the .class files. + </para></entry> + </row> + <row> + <entry><para>deprecation + </para></entry> + <entry><para> + If true, emit messages about use of deprecated API. + </para></entry> + </row> + <row> + <entry><para>verbose + </para></entry> + <entry><para> + Emit compiler status messages during the compile. + </para></entry> + </row> + <row> + <entry><para>version + </para></entry> + <entry><para> + Emit version information and quit. + </para></entry> + </row> + <row> + <entry><para>failonerror + </para></entry> + <entry><para> + If true, build continues notwithstanding compile errors. + Defaults to <literal>true</literal>. + </para></entry> + </row> + <row> + <entry><para>source + </para></entry> + <entry><para> + Value of -source option - ignored unless <literal>1.4</literal>. + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + <table> + <title>Parameters ignored by the old ajc taskdef, + but now supported or buggy</title> + <tgroup cols="3"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + <entry>Supported?</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>encoding + </para></entry> + <entry><para>Default encoding of source files. + </para></entry> + <entry><para>yes + </para></entry> + </row> + <row> + <entry><para>optimize + </para></entry> + <entry><para> + Whether source should be compiled with optimization. + </para></entry> + <entry><para>yes? + </para></entry> + </row> + <row> + <entry><para>target + </para></entry> + <entry><para> + Generate class files for specific VM version, one of + [<literal>1.1 1.2</literal>]. + </para></entry> + <entry><para>yes + </para></entry> + </row> + <row> + <entry><para>depend + </para></entry> + <entry><para> + Enables dependency-tracking. + </para></entry> + <entry><para>no + </para></entry> + </row> + <row> + <entry><para>includeAntRuntime + </para></entry> + <entry><para> + Whether to include the Ant run-time libraries. + </para></entry> + <entry><para>no + </para></entry> + </row> + <row> + <entry><para>includeJavaRuntime + </para></entry> + <entry><para> + Whether to include the run-time libraries from the executing VM. + </para></entry> + <entry><para>no + </para></entry> + </row> + <row> + <entry><para>threads + </para></entry> + <entry><para>Multi-threaded compilation + </para></entry> + <entry><para>no + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + <para> + The following table shows that many of the unique parameters in + AspectJ 1.0 are no longer supported. + </para> + <table> + <title>Parameters unique to ajc</title> + <tgroup cols="3"> + <thead> + <row> + <entry>Attribute</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><para>X + </para></entry> + <entry><para> + comma-delimited list of extended (-X...) options, + entered without -X (e.g., + <literal>X="lint"</literal> for -Xlint). + </para></entry> + </row> + <row> + <entry><para>emacssym + </para></entry> + <entry><para> + Generate symbols for Emacs IDE support. + </para></entry> + </row> + <row> + <entry><para>argfiles + </para></entry> + <entry><para> + A comma-delimited list of argfiles that contain a line-delimited + list of source file paths (absolute or relative to the argfile). + </para></entry> + </row> + </tbody> + </tgroup> + </table> + + + <sect3> + <title>argfiles - argument list files</title> + <para> + An argument file is a file (usually <literal>{file}.lst</literal>) + containing a list of source file paths + (absolute or relative to the argfile). + You can use it to specify all source files to be compiled, + which ajc requires to avoid searching every possible source file + in the source path when building aspects. + If you specify an argfile to the ajc task, it will not include all + files in any specified source directory (which is the default + behavior for the Javac task when no includes are specified). + Conversely, if you specify excludes, they will be removed from + the list of files compiled even if they were specified + in an argument file. + </para> + <para> + The compiler also accepts arguments that are not source files, + but the IDE support for such files varies, and Javac does not + support them. Be sure to include exactly one argument on each line. + </para> + </sect3> + </sect2> + + <sect2 id="antTasks-ajc-nested"> + <title>Ajc10 parameters specified as nested elements</title> + <para> + This task forms an implicit FileSet and supports all attributes of + <literal><fileset></literal> (dir becomes srcdir) as well as + the nested + <literal><include></literal>, + <literal><exclude></literal>, and + <literal><patternset></literal> elements. + These can be used to specify source files. However, we recommend + using sourceRoots to specify source directories unless using + filters to exclude some files from compilation. + </para> + <para> + <literal>ajc</literal>'s + <literal>srcdir</literal>, + <literal>classpath</literal>, + <literal>bootclasspath</literal>, + <literal>extdirs</literal>, and + <literal>jvmarg</literal> + attributes are path-like structures and can also be set via nested + <literal><src></literal>, + <literal><classpath></literal>, + <literal><bootclasspath></literal>, + <literal><extdirs></literal>, and + <literal><jvmargs></literal> elements, respectively. + </para> + + </sect2> + + <sect2 id="antTasks-ajc-sample" xreflabel="Sample of ajc task"> + <title>Sample of ajc task</title> + <para> + Following is a declaration for the ajc task and a sample invocation + that uses the ajc compiler to compile the files listed in + <literal>default.lst</literal> into the dest dir: + </para> + <programlisting> + <![CDATA[ +<project name="example" default="compile" > + <taskdef name="ajc" + classname="org.aspectj.tools.ant.taskdefs.Ajc10" > + <!-- declare classes needed to run the tasks and tools --> + <classpath> + <pathelement location="${home.dir}/tools/aspectj/lib/aspectjtools.jar"/> + </classpath> + </taskdef> + + <target name="compile" > + <mkdir dir="dest" /> + <ajc destdir="dest" argfiles="default.lst" > + <!-- declare classes needed to compile the target files --> + <classpath> + <pathelement location="${home.dir}/tools/aspectj/lib/aspectjrt.jar"/> + </classpath> + </ajc> + </target> +</project> +]]> + </programlisting> + <para> + This build script snippet + </para> + <programlisting> + <![CDATA[ + <ajc srcdir="${src}" + destdir="${build}" + argfiles="demo.lst" + /> +]]> + </programlisting> + <para> + compiles all .java files specified in the demo.lst and stores the .class files in the ${build} directory. Unlike the Javac task, the includes attribute is empty by default, so only those files specified in demo.lst are included. + </para> + <para> + This next example + </para> + <programlisting> + <![CDATA[ + <ajc srcdir="${src}" + destdir="${build}" + includes="spacewar/*,coordination/*" + excludes="spacewar/Debug.java" + /> +]]> + </programlisting> + <para> + compiles .java files under the <literal>${src}</literal> directory in the + spacewar and coordination packages, and stores the .class files in the + <literal>${build}</literal> directory. + All source files under spacewar/ and coordination/ are used, except Debug.java. + </para> + <para> + See <ulink url="../examples/builds.xml">../examples/builds.xml</ulink> + for an example build script. + </para> + </sect2> + + </sect1> + + <sect1 id="antTasks-problems"> + <title>Isolating problems running the Ant tasks</title> + + <para> + If you have problems with the tasks not solved by the documentation, + please try to see if you have the same problems when running ajc + directly on the command line. + </para> + <itemizedlist> + <listitem><para> + If the problem occurs on the command line also, then the problem + is not in the task. + (It may be in the tools; please send bug reports.) + </para></listitem> + <listitem><para> + If the problem does not occur on the command line, then it may + lie in the parameters you are supplying in Ant or in the task's + handling of them. + </para></listitem> + <listitem><para> + If the build script looks correct and the problem only occurs when + building from Ant, then please send a report + (including your build file, if possible). + </para></listitem> + </itemizedlist> + + <sect2 id="antTasks-knownProblems"> + <title>Known issues with the Ant tasks</title> + <para> + For the most up-to-date information on known problems, + see the + <ulink url="http://dev.eclipse.org/bugs">bug database</ulink> + for unresolved + <ulink url="http://dev.eclipse.org/bugs/buglist.cgi?&product=AspectJ&component=Compiler&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED"> + compiler bugs + </ulink> or + <ulink url="http://dev.eclipse.org/bugs/buglist.cgi?&product=AspectJ&component=Ant&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED"> + taskdef bugs + </ulink>. + </para> + <para> + Memory and forking: Users email most often about the ajc task running + out of memory. + This is not a problem with the task; some compiles take a lot of + memory, often more than similar compiles using javac. + </para> + <para> + Forking is now supported in both the + <xref linkend="antTasks-adapter"/> and + <xref linkend="antTasks-iajc"/>, + and you can set the maximum memory available. + You can also not fork and increase the memory available to Ant + (see the Ant documentation, searching for ANT_OPTS, + the variable they use in their scripts to pass VM options, + e.g., ANT_OPTS=-Xmx128m). + </para> + </sect2> + <sect2 id="antTasks-feedback"> + <title>Ant task questions and bugs</title> + <para> + For questions, you can send email to + <ulink url="mailto:aspectj-users@dev.eclipse.org"> + aspectj-users@dev.eclipse.org</ulink>. + (Do join the list to participate!) + We also welcome any bug reports, patches, and features; + you can submit them to the bug database at + <ulink url="http://dev.eclipse.org/bugs"> + http://dev.eclipse.org/bugs</ulink> + using the AspectJ product and Ant component. + </para> + </sect2> + </sect1> +</chapter> <!-- Local variables: --> <!-- fill-column: 79 --> diff --git a/docs/devGuideDB/devguide.xml b/docs/devGuideDB/devguide.xml index 1c93ce2cb..205af29db 100644 --- a/docs/devGuideDB/devguide.xml +++ b/docs/devGuideDB/devguide.xml @@ -35,20 +35,43 @@ <abstract> <para> This guide describes the tools in the AspectJ 1.1 development - environment. See also <ulink url="../progguide/index.html">The - AspectJ Programming Guide</ulink>, the documentation for the - AspectJ <ulink url="../ant-tasks.html">Ant tasks</ulink>, and the - documentation available with the AspectJ support available for - various integrated development environments (e.g., Eclipse, Emacs, - JBuilder, and NetBeans). + environment. See also + <ulink url="../progguide/index.html">The + AspectJ Programming Guide</ulink>, + the documentation available with the AspectJ support available for + various integrated development environments (e.g., Eclipse, Emacs, + JBuilder, and NetBeans), + and the most-recent documentation available from + the AspectJ project page, at + <ulink url="http://eclipse.org/aspectj"> + http://eclipse.org/aspectj</ulink>. + <!-- + <itemizedlist> + <listitem><ulink url="../progguide/index.html">The + AspectJ Programming Guide</ulink> + </listitem> + <listitem>the + documentation available with the AspectJ support available for + various integrated development environments (e.g., Eclipse, Emacs, + JBuilder, and NetBeans) + </listitem> + <listitem>the most-recent documentation available from + the AspectJ project page, at + <ulink url="http://eclipse.org/aspectj"> + http://eclipse.org/aspectj</ulink>. + </listitem> + </itemizedlist> + --> </para> </abstract> </bookinfo> <reference> &ajc; - &ajbrowser; </reference> + + &ajbrowser; + &antsupport; </book> |