git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267632 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,82 @@ | |||||
| <?xml version="1.0"?> | |||||
| <?xml-stylesheet href="docbookx.css" type="text/css"?> | |||||
| <!--DOCTYPE article SYSTEM "docbookx.dtd"--> | |||||
| <article> | |||||
| <artheader> | |||||
| <title>Utah Design and Programmer's Guide</title> | |||||
| <author> | |||||
| <firstname>James Duncan</firstname> | |||||
| <surname>Davidson</surname> | |||||
| </author> | |||||
| <copyright> | |||||
| <year>2000</year> | |||||
| <holder>The Apache Software Foundation</holder> | |||||
| </copyright> | |||||
| </artheader> | |||||
| <para>This document describes the design goals for Utah, a proposed | |||||
| replacement for the current Ant build tool. I'm calling this work "Utah" as I | |||||
| hope to be done with it by the end of the W3C DOM Working Group meeting taking | |||||
| place in Orem Utah Mar 20-23. No other meaning is intended to be conveyed by | |||||
| the codename.</para> | |||||
| <sect1> | |||||
| <title>History</title> | |||||
| <para>Ant was originally designed as a small, lightweight | |||||
| <trademark>Java</trademark> based build tool. It was first created out of shear | |||||
| frustration with make and all its variants. </para> | |||||
| <para>This first public version of Ant, Ant 1.0 which was released as part | |||||
| of the Tomcat and Watchdog code drops from Sun Microsystems, was quite popular. | |||||
| Everyone loved its simplicity. However, everyone wanted to do something | |||||
| different. Lots of solutions were proposed, some were hacked in. At some point | |||||
| it was necessary to take a clean look at what it was becoming and the types of | |||||
| problems it was really intended to solve.Utah is that fresh look It is probably | |||||
| not going to be entirely backwards compatible, but it is hoped that by starting | |||||
| out with a fresh look at the goals and requirements of Ant, we can end up with | |||||
| a better tool.</para> | |||||
| </sect1> | |||||
| <sect1> | |||||
| <title>Design Goals</title> | |||||
| <para>Simplicity: </para> | |||||
| <para>Ant must be simple to use and simple to extend. Of course, the | |||||
| definition of simple can vary depending on which audience is chosen. For Ant, | |||||
| since it is a build tool aimed at Java developers, the goal is simplicity of | |||||
| use and extension for a competent Java programmer.</para> | |||||
| <para>Understandability: </para> | |||||
| <para>The way Ant works should be clearly understandable for a first time | |||||
| as well as a veteran user. The mechanism to extend Amsterdam must be | |||||
| understandable. And the build file syntax must be eminently | |||||
| understandable.</para> | |||||
| <para>Extensibility: </para> | |||||
| <para>Ant must provide an easy to use extensibility path. Extensions must | |||||
| be easy to write for the programmer and easy to place where they can best be | |||||
| used.</para> | |||||
| </sect1> | |||||
| <sect1> | |||||
| <title>Runtime Conceptual Overview</title> | |||||
| <para>Ant works with entities called Projects. A Project is a collection of | |||||
| Property definitions, Task definitions, and Targets.</para> | |||||
| <para>A Property is a mutable name-value pair that is scoped to the | |||||
| Project. As Tasks within Targets are executed, the Property list of the Project | |||||
| can be added to, Property values can be changed, and Properties can even be | |||||
| removed. This allows runtime information to be passed to the Tasks either by | |||||
| the user or by programmatic result of preceding Tasks.</para> | |||||
| <para>A Target is a unit of work within the Project. For example, a Project | |||||
| could have a Target that built a set of classes in development mode, another | |||||
| Target that packaged the classes into a distributable form, and yet another | |||||
| Target that cleaned up everything. Targets can indicate that they depend on | |||||
| other Targets. If such a dependency is indicated, the runtime ensures that the | |||||
| Target that is depended on is executed before executing any Tasks for the | |||||
| current Target.</para> | |||||
| <para>Targets contain Tasks. More accurately, they contain implementations | |||||
| of a Task. For example, a Task that performs basic Java classfile compilation | |||||
| is provided with Ant. Another task that performs the JAR operation is provided. | |||||
| These Tasks are very different, but each implements the Task interface. Each | |||||
| Task is configured for its purpose. When a Target is executed, the sequence of | |||||
| Tasks within that target are executed in turn.</para> | |||||
| <para>More specifically, when a Target is executed, the list of Tasks for | |||||
| that Target is retrieved by the runtime. Each Task is created as a new object, | |||||
| its configuration methods called with the information that is used, and then | |||||
| the Task is executed. By performing configuration just before the Task is | |||||
| executed, any properties that were defined or modified by other Tasks can | |||||
| affect the currently running task.</para> | |||||
| </sect1> | |||||
| </article> | |||||
| @@ -0,0 +1,64 @@ | |||||
| /* Use Times New Roman for default font */ | |||||
| $DOCUMENT { | |||||
| font-family: "Times New Roman"; | |||||
| font-size: 12pt; | |||||
| margin-top: 5px; | |||||
| margin-left: 5px; | |||||
| } | |||||
| $COMMENT { | |||||
| display: block; | |||||
| color: purple; | |||||
| white-space: pre; | |||||
| } | |||||
| $PROCINS { | |||||
| color: black; | |||||
| background-color: #c0c0c0; | |||||
| } | |||||
| abbrev, abstract, ackno, acronym, address, affiliation, alt, answer, appendix, areaset, areaspec, arg, artheader, article, artpagenums, attribution, audioobject, author, authorblurb, authorgroup, authorinitials, bibliodiv, biblioentry, bibliography, bibliomisc, bibliomixed, biblioset, blockquote, book, bookbiblio, bookinfo, bridgehead, callout, calloutlist, caption, caution, chapter, citerefentry, citetitle, cmdsynopsis, collab, collabname, colophon, command, comment, confdates, confgroup, confnum, confsponsor, conftitle, contractnum, contractsponsor, contrib, copyright, corpauthor, corpname, date, dedication, docinfo, edition, editor, entry, entrytbl, epigraph, equation, example, figure, firstname, footnote, formalpara, funcdef, funcprototype, funcsynopsis, funcsynopsisinfo, glossary, glossdef, glossdiv, glossentry, glosslist, glosssee, glossseealso, glossterm, graphicco, group, guibutton, guiicon, guilabel, guimenu, guimenuitem, guisubmenu, highlights, holder, honorific, imageobject, imageobjectco, important, index, indexdiv, indexentry, indexterm, informalequation, informalexample, informalfigure, informaltable, inlineequation, inlinemediaobject, interface, invpartnumber, isbn, issn, issuenum, itemizedlist, itermset, jobtitle, keycap, keycombo, keysym, keyword, keywordset, label, legalnotice, lineage, link, listitem, literallayout, lot, lotentry, manvolnum, mediaobject, mediaobjectco, member, menuchoice, modespec, mousebutton, msg, msgaud, msgentry, msgexplan, msginfo, msglevel, msgmain, msgorig, msgrel, msgset, msgsub, msgtext, note, objectinfo, olink, option, orderedlist, orgdiv, orgname, othercredit, othername, pagenums, para, paramdef, part, partintro, phrase, preface, primary, primaryie, printhistory, procedure, productname, productnumber, programlisting, programlistingco, pubdate, publisher, publishername, pubsnumber, qandadiv, qandaentry, qandaset, question, refclass, refdescriptor, refentry, refentrytitle, reference, refmeta, refmiscinfo, refname, refnamediv, refpurpose, refsect1, refsect1info, refsect2, refsect2info, refsect3, refsect3info, refsynopsisdiv, refsynopsisdivinfo, releaseinfo, replaceable, revhistory, revision, revnumber, revremark, row, screen, screenco, screeninfo, screenshot, secondary, secondaryie, sect1, sect1info, sect2, sect2info, sect3, sect3info, sect4, sect4info, sect5, sect5info, section, sectioninfo, see, seealso, seealsoie, seeie, seg, seglistitem, segmentedlist, segtitle, seriesinfo, seriesvolnums, set, setindex, setinfo, shortaffil, shortcut, sidebar, simpara, simplelist, simplesect, step, subject, subjectset, subjectterm, substeps, subtitle, surname, synopfragment, synopfragmentref, synopsis, table, tbody, term, tertiary, tertiaryie, textobject, tfoot, tgroup, thead, tip, title, titleabbrev, toc, tocback, tocchap, tocentry, tocfront, toclevel1, toclevel2, toclevel3, toclevel4, toclevel5, tocpart, ulink, variablelist, varlistentry, videoobject, volumenum, warning, year { | |||||
| display: block; | |||||
| } | |||||
| surname { | |||||
| display: inline; | |||||
| } | |||||
| firstname { | |||||
| display: inline; | |||||
| } | |||||
| year { | |||||
| display: inline; | |||||
| } | |||||
| holder { | |||||
| display: inline; | |||||
| } | |||||
| title { | |||||
| margin-bottom: 6pt; | |||||
| font-weight: bold; | |||||
| font-size: 12pt; | |||||
| margin-top: 12pt; | |||||
| } | |||||
| author { | |||||
| font-family: sans-serif; | |||||
| } | |||||
| article { | |||||
| font-family: sans-serif; | |||||
| font-size: 10pt; | |||||
| } | |||||
| para { | |||||
| margin-top: 6pt; | |||||
| margin-bottom: 6pt; | |||||
| } | |||||
| itemizedlist { | |||||
| margin-left: 24pt; | |||||
| } | |||||