How apache/ant works
Apache Ant is a portable, Java-based build tool: users invoke it with command-line options and an XML build file; Ant parses the file into targets and tasks, orders targets by dependencies, and executes task objects to produce build artifacts or invoke external tools. The graph preserves the documented execution model and major task families, plus core project, property, and input layers. Several task subsystems are unsampled, so their connections are shown as unverified rather than inferred as a call chain.
Main entry points: Task.java Task runtime · Project.java Project state · Main.java Command line · ProjectHelper.java Project helper
Components 20
Invocation and parsing
- Command line
src/main/org/apache/tools/ant/Main.java - XML build file
- Project helper
src/main/org/apache/tools/ant/ProjectHelper.java - Helper registry
src/main/org/apache/tools/ant/ProjectHelperRepository.java
Build model
- Project state
src/main/org/apache/tools/ant/Project.java - Property resolution
src/main/org/apache/tools/ant/PropertyHelper.java - Target graph
src/main/org/apache/tools/ant/Target.java - Configured elements
src/main/org/apache/tools/ant/UnknownElement.java
Execution
- Task runtime
src/main/org/apache/tools/ant/Task.java - Input handling
src/main/org/apache/tools/ant/input/DefaultInputHandler.java
Build capabilities
- File operations
src/main/org/apache/tools/ant/taskdefs/Copy.java - Java compilation
src/main/org/apache/tools/ant/taskdefs/Javac.java - Packaging
src/main/org/apache/tools/ant/taskdefs/Jar.java - External commands
src/main/org/apache/tools/ant/taskdefs/Exec.java - Optional integrations
src/main/org/apache/tools/ant/taskdefs/optional
Shared runtime
- Build errors
src/main/org/apache/tools/ant/BuildException.java - File selection
src/main/org/apache/tools/ant/types/resources/Files.java - File utilities
src/main/org/apache/tools/ant/util/FileUtils.java
Other components
- Build author
- Interactive user
Connections 22
- Build author → Command line: invokes
README - Build author → XML build file: defines
README - Command line → Project state: starts
src/main/org/apache/tools/ant/Main.java - Command line → Input handling: configures
src/main/org/apache/tools/ant/Main.java - Project state → Helper registry: selects parser
src/main/org/apache/tools/ant/ProjectHelper.java - Helper registry → Project helper: registers helpers
src/main/org/apache/tools/ant/ProjectHelperRepository.java - Project helper → XML build file: parses
src/main/org/apache/tools/ant/ProjectHelper.java - Project helper → Project state: configures
src/main/org/apache/tools/ant/ProjectHelper.java - Project state → Target graph: orders dependencies
src/main/org/apache/tools/ant/Project.java - Project state → Property resolution: uses properties
src/main/org/apache/tools/ant/Project.java - Project state → File selection: uses resources
src/main/org/apache/tools/ant/Project.java - Target graph → Task runtime: executes tasks
README - Task runtime → Configured elements: configures
src/main/org/apache/tools/ant/Task.java - Task runtime → Build errors: raises
src/main/org/apache/tools/ant/Task.java - Input handling → Interactive user: prompts
src/main/org/apache/tools/ant/input/DefaultInputHandler.java - Task runtime → File operations: dispatches task
- Task runtime → Java compilation: dispatches task
- Task runtime → Packaging: dispatches task
- Task runtime → External commands: dispatches task
README - Task runtime → Optional integrations: dispatches task
src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java - File operations → File utilities: uses utilities
- File operations → File selection: selects files