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. | |||