Project Plan For Aether, version 0.9.0
Introduction
The Aether project provides a library to interact with artifact repositories. In this context, artifact refers to some arbitrary file. Interaction refers to the acts of downloading artifacts and potentially their transitive dependencies from repositories for consumption by a local task and uploading local artifacts to repositories for sharing with others.
The project is currently divided into three codebases:
-
Aether Core
The API, SPI, utility classes and base implementation of the library. -
Aether Demo
A collection of runnable example source code snippets for users to experiment with the library. -
Aether Ant Tasks
A collection of tasks for Apache Ant to employ Aether for interaction with repositories using the Apache Maven format.
Release Deliverables
For Aether Core, a set of JARs will be published in the Eclipse download area for users to manually pull down and integrate into their applications. Additionally, these JARs will be published to the Central Repository for both users and build tooling to fetch. While the JARs of Aether Core contain OSGi-enabled manifests, there are currently no plans to publish a P2 update site until the community expresses strong interest in this distribution form.
Aether Demo will never be part of a release deliverable, the only purpose of this codebase is to serve as runnable documentation which users are expected to checkout directly from the project's Git repository.
Aether Ant Tasks depends on parts of Apache Maven that extend Aether Core to work with Maven repositories. Until the Apache Maven project has released a new version that incorporates Aether Core, Aether Ant remains unbuildable/unreleasable.
Release Milestones
Release milestones will be published as committer time allows.
| M1 | ??/10/2012 | 0.9.0.M1 |
Target Environments
Aether consists of pure Java code and is expected to run on any JVM that supports Java SE 5 or newer.
Aether Ant Tasks target Apache Ant 1.7 or newer.
Internationalization
None of the Aether deliverables are internationalized, any log and exception messages use English.
Compatibility with Previous Releases
Compatibility with Sonatype Aether
API Contract Compatibility:
To comply with Eclipse Foundation requirements, all Aether Java types/packages have been
moved into the
org.eclipse.aether
namespace. No compatibility layer will be provided for users of Sonatype Aether.
Source Compatibility:
To comply with Eclipse Foundation requirements, all Aether Java types/packages have been
moved into the
org.eclipse.aether
namespace. While the API has undergone some refactoring and cleanup during the move to Eclipse, it is
expected that
typical clients mainly need to update their imports and make minor code changes to successfully build against the
new Aether API.
Themes and Priorities
Clean up API
With the move of the code into the
org.eclipse.aether
namespace being a breaking change anyways, this provided an opportunity to remove deprecated code.
Additionally, the API has been refactored in some places to ease future evolution and to improve its
usuability.
Ease Integration into Applications
Aether's component system has been enriched with annotations to support JSR-330 compliant dependency injection. Furthermore, Aether automatically wires itself to the popular SLF4J logging if this is available at runtime and the client application did not configure another logging mechanism. Last but not least, the Aether JARs are equipped with OSGi metadata to facilitate direct usage in OSGi-based applications.
Appendix
Apache Ant, Ant, Apache Maven, Maven and Apache are trademarks of the Apache Software Foundation.
