After announcing my plans to compare Ant, Maven and Gradle implementations in my previous post Ant, Maven, Gradle…or something else… almost 2 months ago, I have finally found some time to begin my little experiment.
The initial implementation involves the use of Ant with Ivy, to build and test a simple Java class. Dependencies including Ivy itself, JUnit 4.8.2 and OpenPojo should be obtained as part of the build itself. Anyone wishing to use the build should only require a working Java environment and Ant installed. It appeared to be simple enough in principle. It turns out to be a little more complicated in practice.
Challenges encountered with this implementation thus far:
- Bootstrapping of Apache Ivy (this was expected)
- JUnit 4.8.2 has not been released into any Maven repositories
- OpenPojo doesn’t exist in any Maven repositories
The repository issues will affect all of the implementations. This lead me to consider adding a local repository manager (to which I could install the required artifacts) to the experiment.
With Ant/Ivy I can bootstrap the appropriate artifacts and install them locally. I believe adding a local repository manager such as Artifactory, Archiva or Nexus would provide a better solution – but at the expense of adding a requirement that the user have a repository manager installed (with the appropriate artifacts) for the build to run successfully. Thus for the Ant/Ivy implementation I don’t plan to use a repository manager.
So that leaves me with the 3 challenges to meet. I shall deal with each of these in a separate blog entry, as and when I have completed a reasonable solution. I shall also post the relevant code to GitHub for those interested in testing it and providing feedback.
Do you have any comments about the implementation? Should I be using a repository manager? What is the best way to bootstrap the required artifacts? Any suggestions/ideas? If so please add them in a comment below.

You can easily install a downloaded jar into your local maven repository and refer to it in your build dependencies. If you configure the jar in your pom, maven will actually give you back the required command line invocation(minus the file path) required to install the dependency in an error message.
Instructions for how to install the jar locally are here:
http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
Cheers, and I look forward to hearing more about your ‘experiment’.