git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267564 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,48 @@ | |||||
| /* | |||||
| * ============================================================================ | |||||
| * 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 modifica- | |||||
| * tion, 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 acknowledgment: "This product includes software | |||||
| * developed by the Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowledgment may appear in the software itself, if | |||||
| * and wherever such third-party acknowledgments normally appear. | |||||
| * | |||||
| * 4. The names "Ant" 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 name, without prior written permission of the | |||||
| * Apache Software Foundation. | |||||
| * | |||||
| * 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 (INCLU- | |||||
| * DING, 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/>. | |||||
| * | |||||
| */ | |||||
| @@ -1,46 +1,68 @@ | |||||
| README file for the jakarta-ant workspace | |||||
| ----------------------------------------------------------------- | |||||
| $Id$ | |||||
| ================================================================= | |||||
| This is the workspace for Ant, a Java based build tool. | |||||
| A N T | |||||
| TODO List: | |||||
| What is it? | |||||
| ----------- | |||||
| Ant is a Java based build tool. In theory it is kind of like "make" | |||||
| without makes wrinkles and with the full portability of pure java code. | |||||
| * Improve documentation of how to use ant, how tasks are | |||||
| constructed, etc. | |||||
| Why? | |||||
| ---- | |||||
| Why another build tool when there is already make, gnumake, nmake, jam, | |||||
| and others? Because all of those tools have limitations that its original | |||||
| author couldn't live with when developing software across multiple platforms. | |||||
| Make-like tools are inherently shell based. They evaluate a set of | |||||
| dependencies and then execute commands not unlike what you would issue on a | |||||
| shell. This means that you can easily extend these tools by using or writing | |||||
| any program for the OS that you are working on. However, this also means that | |||||
| you limit yourself to the OS, or at least the OS type such as Unix, that you | |||||
| are working on. | |||||
| Makefiles are inherently evil as well. Anybody who has worked on them for any | |||||
| time has run into the dreaded tab problem. "Is my command not executing | |||||
| because I have a space in front of my tab!!!" said the original author of Ant | |||||
| way too many times. Tools like Jam took care of this to a great degree, but | |||||
| still use yet another format to use and remember. | |||||
| Ant is different. Instead a model where it is extended with shell based | |||||
| commands, it is extended using Java classes. Instead of writing shell | |||||
| commands, the configuration files are XML based calling out a target tree | |||||
| where various tasks get executed. Each task is run by an object which | |||||
| implements a particular Task interface. | |||||
| Granted, this removes some of the expressive power that is inherent by being | |||||
| able to construct a shell command such as `find . -name foo -exec rm {}` but | |||||
| it gives you the ability to be cross platform. To work anywhere and | |||||
| everywhere. And hey, if you really need to execute a shell command, Ant has | |||||
| an exec rule that allows different commands to be executed based on the OS | |||||
| that it is executing on. | |||||
| * Improve error reporting on BuildException catches. Error should | |||||
| state which task and which target was active at the time the | |||||
| BuildException was popped. | |||||
| The Latest Version | |||||
| ------------------ | |||||
| * Improve error reporting on XML parse. Currently if the build.xml | |||||
| file is malformed we get some sort of odd SAX exception that could | |||||
| be better put. | |||||
| Details of the latest version can be found on the Apache Jakarta | |||||
| Project web site <http://jakarta.apache.org/>. | |||||
| * Provide an AbstractFileCompareTask class with prebuilt "srcfile" | |||||
| and "destfile" setter methods and whose execute method calls a | |||||
| "updateNeeded" method. | |||||
| * Transform task -- XSLT | |||||
| Documentation | |||||
| ------------- | |||||
| * Output logs in XML -- this would be a global option of the project | |||||
| (log location, verboseness, etc) | |||||
| Documentation is available in HTML format, in the docs/ directory. | |||||
| * Javac improvements -- support the "modern" 1.3 compiler | |||||
| * Investigate some sort of command line "execute an instance of a | |||||
| task with these parameters" entry point. Maybe a | |||||
| `org.apache.ant.TaskMain task org.foo.BarTask attrib1=foo | |||||
| attrib2=bar` type entry point? | |||||
| Licensing | |||||
| --------- | |||||
| * Investigate some sort of "touch" functionality. Not sure how this | |||||
| could be done in a portable way -- maybe append 0 bytes to a file | |||||
| as a quick hack? | |||||
| This software is licensed under the terms you may find in the file | |||||
| named "LICENSE" in this directory. | |||||
| * GUI front end -- examine tasks, add task properties, etc. Also, | |||||
| one button push build of a particular target. | |||||
| * Test harness. All software projects should have an automatable | |||||
| test suite. Ant is no exception to this rule. | |||||
| Thanks for using Ant. | |||||
| The Apache Jakarta Project | |||||
| <http://jakarta.apache.org/> | |||||
| @@ -0,0 +1,42 @@ | |||||
| TODO List: | |||||
| * write a target rule that reacts on class presence or more generally, a way | |||||
| to apply environment conditions that must be met in order for a target to | |||||
| be executed. This is _vital_ for highly componentized systems where | |||||
| non-core parts of the software may be skipped if the required classes | |||||
| are not present in the build classpath. | |||||
| * Improve error reporting on BuildException catches. Error should | |||||
| state which task and which target was active at the time the | |||||
| BuildException was popped. | |||||
| * Improve error reporting on XML parse. Currently if the build.xml | |||||
| file is malformed we get some sort of odd SAX exception that could | |||||
| be better put. | |||||
| * Provide an AbstractFileCompareTask class with prebuilt "srcfile" | |||||
| and "destfile" setter methods and whose execute method calls a | |||||
| "updateNeeded" method. | |||||
| * Transform task -- XSLT | |||||
| * Output logs in XML -- this would be a global option of the project | |||||
| (log location, verboseness, etc) | |||||
| * Javac improvements -- support the "modern" 1.3 compiler | |||||
| * Investigate some sort of command line "execute an instance of a | |||||
| task with these parameters" entry point. Maybe a | |||||
| `org.apache.ant.TaskMain task org.foo.BarTask attrib1=foo | |||||
| attrib2=bar` type entry point? | |||||
| * Investigate some sort of "touch" functionality. Not sure how this | |||||
| could be done in a portable way -- maybe append 0 bytes to a file | |||||
| as a quick hack? | |||||
| * GUI front end -- examine tasks, add task properties, etc. Also, | |||||
| one button push build of a particular target. | |||||
| * Test harness. All software projects should have an automatable | |||||
| test suite. Ant is no exception to this rule. | |||||