Aether/Getting Aether

From Eclipsepedia

Jump to: navigation, search

If you would like to take Aether for a test drive, the easiest way is probably to setup a simple Maven project. These are the XML bits for your POM to get Aether onto your class path:

<project>
  ...
  <properties>
    <aetherVersion>1.0.0.v20140518</aetherVersion>
    <mavenVersion>3.1.0</mavenVersion>
    <wagonVersion>1.0</wagonVersion>
  </properties>
  ...
  <dependencies>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-api</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-util</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-impl</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-connector-basic</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-transport-file</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-transport-http</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.aether</groupId>
      <artifactId>aether-transport-wagon</artifactId>
      <version>${aetherVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-aether-provider</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>${wagonVersion}</version>
    </dependency>
  </dependencies>
  ...
</project>

Let's have a closer look at these dependencies and what they are used for:

  • aether-api
    This JAR contains the application programming interfaces that clients of Aether use. The entry point to the system is org.eclipse.aether.RepositorySystem.
  • aether-util
    Here are various utility classes and ready-made components of the repository system collected.
  • aether-impl
    This archive hosts many actual implementation classes of the repository system. Unless one intents to customize internals of the system or needs to manually wire it together, clients should not access any classes from this JAR directly.
  • aether-connector-basic
    The uploads and downloads of artifacts to remote repositories are realized by so called repository connectors. This particular connector is somewhat generic and delegates part of the work to pluggable transport protocols and repository layouts. So to be clear, by itself, this connector can't access any repository, one always needs to include one or more transport modules to get a functioning system.
  • aether-transport-file
    A transport module that adds support to access repositories using file: URLs.
  • aether-transport-http
    This module enables access to http: and https: based repositories.
  • aether-transport-wagon
    This transport module is based on Maven Wagon and can employ any existing Wagon providers to access repositories.
  • wagon-ssh
    This dependency complements the previously mentioned aether-transport-wagon and adds support for tranfers using the scp: and sftp: schemes. Its inclusion in the above POM snippet is merely an example, use whatever Wagon providers fit your needs or none at all, in which case one can also drop aether-transport-wagon from the list.
  • maven-aether-provider
    This dependency provides the pieces to employ Maven POMs as artifact descriptors and extract dependency information from them. Furthermore, it provides the handling of the other metadata files used in a Maven repository.

Note: Aether targets Java 1.5+ so be sure to set your compiler settings accordingly.

Now that you have the dependencies of your toy project together, you likely want to know how to go about Setting Aether Up.