Ant GUI Feature List
Version 0.4 (2000/11/06)
Authors:
Simeon H.K. Fitch,
Chris Todd,
Clint Combs,
Conor MacNeill,
Matthew Kuperus Heun,
James Duncan Davidson
The purpose of this document is to capture the proposed feature list for
the Ant Graphical User Interface. This is not a hard requirements
specification; you won't find the word "shall" in it (other than that one
time). :-)
In general, the purpose of the GUI is to allow the quick generation and
modification of Ant build files, helping the user define their build process
and track down build problems. For it to be successful it must make the user
more efficient and productive, insofar as their involvement in build
management and use of Ant goes. It should first address the needs of the
novice Ant user, and then add abilities for the "power" user. This does not
imply that the UI should be "dumbed down", it just means that usability
should come before slick but complicated features.
The features are in a loose order of expressed interested by
contributors.
Build Management
Once a build file is created, the user will want to start and
stop it from the UI. This will serve both as a testing facility as well as
a general compile tool. Monitoring of the build can occur through the Ant
BuildListener interface.
- Build execution.
- Initiate a build starting from any task.
- Stop a currently active build.
- Build monitoring.
- Provide feedback on the current status of the build.
This is where you can have more fun with the directed graph view,
where the current build activity is highlighted on the screen, making
the whole thing behave like a dynamic state transition diagram. You
can then highlight the node where the build fails, etc.
- Show log messages from the build, allowing the user to determine
the task they originated from.
- Provide the ability to filter logged messages, adn to display the
messages in color codes corresponding to logging levels.
- Allow the installation of custom log listeners
- Record runtime statistics to determine bottleneck in the build
process
This may be of limited use, as calling <javac> probably takes
the most time. But maybe not.
Build Wizard (auto-configure)
To make starting a new project with Ant as easy as possible, the a
wizard type of UI can be used where the user provides some basic
information and the application deduces what a default build.xml file for
it should look like.
- Project attributes.
- Provide input for the required project attributes.
This probably means project name and default target.
- Project directories.
- Ask for the source directory.
- Ask for the destination directory.
- Ask for the necessary JAR files.
- Project properties.
- Provide a default set of project properties.
In here would be things like classpath, build.compiler, version,
etc.
- Allow the user to add to or remove from properties the default set
of properties.
- Task creation
- Provide a list of "standard" tasks to insert into the project.
This would be tasks like <javac> and
<javadoc>.
- Generate default init, compile, javadoc, and clean targets.
- Creation review.
- Provide a review of the contents of the generated build.xml
file.
- Allow the user to go back to any step in the process to change a
setting.
- Prompt the user to save the build.xml file.
IDE Integration
Components of the Ant GUI shoule support plugging into IDEs and code
editors.
- Emacs
- Provide support for launching builds from emacs, and notification
of errors.
- JEdit
- Provide JEdit plug-in.
- ProjectBuilder
- Provide integration with OSX ProjectBuilder.
- NetBeans
- Provide integration with the NetBeans IDE.
Project Editing
The Ant UI will be centered around the project file. All operations of
the UI will be on a project, whether it be existing or new. How
sub-projects are handled (i.e. via the <ant> task) needs to be
determined.
- Load a project.
- Read the native Ant XML format as defined by the Ant users'
manual.
- When possible, automatically handle changes in the Ant element
set, or at least changes to the task set, as well as the valid set of
attributes.
Possible approach: load "default.properties", use
introspection to discover attribute set, then reference some other
mechanism for attributes that are manifested as properties.
- Report errors in the XML source.
- Provide a list of recently opened documents for
quick reloading.
- View project contents.
- View the project in it's XML source format.
- View the project in a non-source format.
This is left ambiguous to keep the implementation out of the
requirements. The different presentation formats are likely to evolve
over time.
- View the project properties.
- View the project contents (tasks).
- Modify a project.
- Edit via the XML source.
- Edit properties via a property sheet.
- Provide facility for editing XML references used in the build
file.
- Save a project.
- Save to the native Ant XML format as defined by the Ant users'
manual.
- Default save name is "build.xml".
- Verify before overwriting existing file when in "Save as"
mode.
- Create a new project.
- Define a project name.
- Define the default target.
- Define the project base directory.
Task Editing
Tasks define what it is that Ant is to do, and will be the object most
edited in the UI. Task is to Paragraph as
Project is to Document.
- View tasks.
- View a sorted list of tasks.
Provide sorting based on name, depth in dependency tree, how many
tasks depend in it...
- View tasks as a directed graph.
Need a good graph editing library. Looked at GEF but it still needs a lot of
work, to make it easily reusable. Long term status unknown.
- View tasks as a dependency tree.
- View task as a properties sheet.
- Provide dependency viewing, both immediate and "flattened"
views.
- Modify task.
- Allow editing of a task via a property sheet.
- Allow editing of a task via XML source.
- Allow the graphical editing of task dependencies
This is where you can go hog wild with the component wiring type of
UI.
- Allow non-graphical editing of dependencies.
- Provide detection of circular dependencies.
- Facilitate definition of conditional tasks with evaluation
editor.
Build File Source Editing
This section listes desired features for editing the Ant build file
directly. Some components of this could be met by a generic XML editing
capability, but other parts will be Ant specific features.
- XML Editor.
- Provide syntax higlighting.
- Provide auto-indentation.
- Provide smart tag completion.
- Provide visual highlighting of syntax errors.
- Support auto-reparsing of contents and model update.
Copyright © 2000 Apache Software Foundation. All
rights Reserved.