Work in progress.
The Avalon Repository system is a powerful solution to Jar Hell. The underlying technology is fairly straight forward but it enables so much;
- Avalon Merlin can bootstrap itself remotely, via a ~20kB Jar.
- It is not necessary to keep any Jar files on the computers running your applications.
- The components declares which Jars are required to run, and Merlin will magically download them and make them available.
- You can include components from your own or third-party component repositories, with a single line in block.xml. No download required.
- When a component requires a newer version, you just update the version field in the block.xml.
- Centralized management of Jars at a single location. No need to distribute Jars to many projects within your organization.
To leverage the extensive repository of Maven at ibiblio.org and other compliant repositories, Avalon Repository is capable of harnessing these resources. That means that if your component depends on, let's say, Jakarta Commons Collections, you don't need to track that Jar in your project(s) at all, just specify;
in the block.xml. If you want to include a component in a repository into a component that you are working on, just enter;
Avalon Merlin can be bootstrapped with a minimal Jar file, and be downloaded and started from a central repository. And since the artifact (the object that Repository picks up) is always versioned, you can even select which version of Merlin that you want to start, without having Merlin installed on your system.
Just make sure you have the merlin-cli-N.n.jar, and type;
java -jar merlin-cli-3.3.jar -impl "merlin:merlin-impl;3.3" -execute block.xml
Please note that the first delimiter is a colon (:) and the second one is a semicolon (;).
And the block.xml
can either be a local file or a remote
URL, such as http://myhost.org/blocks/someApp/block.xml