Mercury is a serious attempt to:
- Decouple major Maven components, making them available as stand-alone building blocks rather then having Maven as as one big monolith, not usable outside of its environment.
- Artifact - clearly separate an Artifact from its metadata.
- Repository - convert a repository into active component. It used to give back just pathOf(), now it accepts GAV collections and gives back either metadata or full blown Artifacts.
- Transport - an API in development.
- DependencyTreeBuilder main API for dependency graph creation and conflict resolution.
- Decouple container, so that these components are just plain pojos.
- Introduce Jetty-based HTTP/HTTPS and WebDAV transactional transport layer.
- Asynchronous downloads and uploads. One of the few successful usages of Java NIO in OSS.
- Transactional operations - all-or-nothing for file sets.
- Move integrity control into transport layer, upper level components should not care about these details.
- Abstract out metadata cache, provide at least one implementation there.
- Integrate these changes back to Maven 3.x to make it even better platform than it is right now (if it is possible to be better)
Currently Mercury can already be used for accessing repositories, and conflict resolution is under testing.
Try Nexus Repository Free Today
Sonatype Nexus Repository is the world’s most trusted artifact repository manager. Experience the difference and download Community Edition for free.