Check the latest news and the current status in the News and Status section.
Want to get started quickly? Check the Quick Start section.
What is Antmod
Antmod is an extensible engine for retrieving, versioning, building and deploying code from and to Subversion or CVS. It is ideally suited for Java projects, but can handle non-Java projects as well. Based on the vision of Klaas Waslander of a vendor-independent repository management system, Antmod has become a solution for:
When a release is checked out, Antmod places advanced out-of-the-box Ant buildfiles in the release and each module, that utilize Antmod's set of build plugins. Reuse of build files across projects and modules is natural this way. Default build behavior can be overridden and extended easily; add your own plugin(s) to do this or override behavior in a "local.build.xml" Ant buildfile.
Antmod is based on the concept of modules, stored in a repository, and grouped in releases. Nothing can be built or released without a release descriptor: it defines which modules and which module version to use, and which java libraries it depends on.
Versioning of modules using tags and branches, incrementing version numbers, retrieving files from the repository, transparently working across multiple repositories and using CVS and/or Subversion (even mixed) is what Antmod automates.
These concepts are further explained in "Antmod Versioning Concepts".
Some of the benefits when using Antmod are listed here:
Standardized out-of-the-box buildfiles
For Java projects, Antmod places standardized buildfiles on module and release level, in this way standardizing the way each module and release is built.
Allow customized builds per module and release
Antmod allows modules and releases to override default behavior in the buildfile by committing a "local.build.xml" in the root of the module with the overridden build logic.
Enable reuse of components across projects
It is as simple as adding the module to the release descriptor of the project.
Modularized approach to software artefacts
Code, documentation, configuration, etcetera is grouped in modules that are versioned in a consistent way per module.
Standardize repository usage
Everything is in a module, the module is the versioning unit, and tagging and branching happens per module. Tag and branch names are standardized.
Centralized overview across releases and projects
Release descriptors describe what a release consists of, and are stored centrally in the repository. This provides a centralized view across releases and projects.
Separate developer and release manager roles
The release descriptors can be maintained by a release manager, and do not have to be maintained by the developer.
Antmod and other build systems
Antmod is different from other build systems out there. Compared to Ant, it is a layer on top of it, adding reuse of buildfiles, modules and standardizing the way the repository is used.
Often, people ask about Maven and Antmod. The best way to look at it is that Antmod's repository management combined with Maven's build management could be combined. This is currently not planned and it is not clear if and how this could be achieved. It is also not necessary, since Antmod uses Ant which gives you everything Maven gives you, when combined with Antmod's repository and release management.
With Antmod you can share any type module contents (such as documentation, JSPs, EJBs, etcetera) across releases, while Maven is best suited for sharing JAR contents. Also, Maven is suitable for Java projects, while Antmod's repository management can be used just fine in non-Java projects as well (using the "buildtype" attribute of a release).