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