|
|
@@ -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/> |