# Apache Myrmidon - Introduction

|  | Apache Myrmidon

Myrmidon

- Introduction
- Get Involved
- Building Myrmidon
- Todo List

User Guide

- Build file
- Virtual File System
- Ant1 Compatibility Layer

Extending Ant

- Task Writers HOWTO
- ClassLoader HOWTO
- Library HOWTO

Container Design

What is Myrmidon?

> Myrmidon is one of the Ant 2 proposals currently in development. You can read more about the goals of Ant 2 here.

> Myrmidon is a general-purpose task engine. It contains the basic building blocks for assembling any sort of task-based tool. Ant 2 is an example of such a tool, which could be assembled using the Myrmidon task engine, and a library of build related tasks.

> Currently, Myrmidon is a prototype of what a task engine might look. It includes a small set of tasks and data types. We are currently porting many of the Ant 1.x tasks to the Myrmidon task engine.

Differences to Ant 1.x

> Some of the differences between Ant 1.x and Myrmidon:

> - Groups of tasks can be assembled into self-describing antlib task libraries. This makes it very easy to distribute and install tasks and data-types.
> - A project can import other projects, and reference their targets.
> - Changes to the property model:
>   - Properties and data type references now share the same namespace.
>   - Properties are mutable.
>   - Properties are scoped into global, local, and parent contexts.
>   - `if` and `unless` checks now test the property value against `false`, in addition to testing set/not-set.
> - Changes to task and data-type API:
>   - An interface based API, through which a task interacts with the task engine, and the services it provides.
>   - A well-defined object lifecycle.
>   - Polymorphic types are supported when objects are configured.
>   - Reference handling is handled automatically when objects are configured.
>   - Aspects can be used to decorate tasks, to add facilities like logging, error handling, or user preferences.
> - A set of well-defined services and APIs have been introduced, to allow tasks to do their work without depending on other tasks:
>   - Execute external commands.
>   - Execute other tasks.
>   - Manage ClassLoaders and Class-paths.
>   - Virtual file system (in progress).
>   - Execute Java applications (in progress).
>   - ...

> There are plenty more features planned. You can read about them here.

Copyright © 2000-2002, Apache Software Foundation