Aether/New and Noteworthy
This is the first release of Aether since its migration to the Eclipse Foundation. As such the items listed below indicate changes compared to the previous Sonatype Aether codebase.
Note: There is currently no released version of the maven-aether-provider that builds upon this release of Aether Core so this milestone release is not of direct interest to users seeking access to Maven repositories. Early adopters interested in evaluating the new codebase can find an updated maven-aether-provider at https://github.com/bentmann/maven-3.
All code has been moved into the package org.eclipse.aether and sub packages. Likewise, the group ID of the artifacts deployed to the Central Repository has changed to org.eclipse.aether.
Clean up of API
Besides the new package namespace, the API has been changed in some places to ease usage and maintenance. The list below is not exhaustive but focuses on changes where updates to client code are not obvious:
- TransferEvent.RequestType.GET_EXISTENCE was introduced to allow transfer listeners to distinguish between actual downloads and mere existence checks.
- FilteredRepositorySystemSession was removed and its usages should be replaced with DefaultRepositorySystemSession and its copy constructor.
- The properties transferErrorCachingEnabled and notFoundCachingEnabled of RepositorySystemSession have been replaced by ResolutionErrorPolicy, SimpleResolutionErrorPolicy provides a stock implementation.
- The properties ignoreMissingArtifactDescriptor and ignoreInvalidArtifactDescriptor of RepositorySystemSession have been replaced by ArtifactDescriptorPolicy, SimpleArtifactDescriptorPolicy provides a stock implementation.
- Authentication was remodeled into an interface, the new AuthenticationBuilder provides a way to obtain a stock implementation.
- RemoteRepository instances have been made immutable, RemoteRepository.Builder assists in their instantiation.
Thanks to a contributor, the JAR manifests have been extended with attributes to support use of Aether in an OSGi container. Providing an update site for Aether is an unresolved todo in our issue tracker, contributions welcome.
Support for JSR-330
The components making up the implemenation of Aether have been enriched with javax.inject annotations to support wiring by a JSR-330 compliant container. The class AetherModule helps to set up bindings for the popular Guice container. Likewise, the JARs are equipped with Sisu index files to support efficient component discovery when using Sisu.