Title: Downloads

<a name="Downloads-ApacheAriesDownloads"></a>
# General information

Apache Aries modules are distributed in source and binary form.
These [KEYS](http://www.apache.org/dist/aries/KEYS) can be used to verify the releases.

All Apache Aries products are distributed under the terms of The Apache
Software License (version 2.0). See the LICENSE file included in each
distribution for additional license information.

# Official downloads

The official downloads for Apache projects are hosted at Apache. For maven users we recommend to simply refer to the 
individual maven artifacts instead of downloading by hand.

[Official Aries Downloads](http://www.apache.org/dist/aries/)

# Maven central

All Aries modules are released to [maven central](http://search.maven.org).

The Aries subprojects can be found at these locations

* [async](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.async)
* [blueprint](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.blueprint)
* [eba-maven-plugin](http://search.maven.org/#artifactdetails|org.apache.aries|eba-maven-plugin|1.0.0|maven-plugin)
* [ejb](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.ejb)
* [jmx](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.jmx)
* [jndi](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.jndi)
* [jpa](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.jpa)
* [proxy](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.proxy)
* [quiesce](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.quiesce)
* [subsystem](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.subsystem)
* [testsupport](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.testsupport)
* [transaction](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.transaction)
* [util](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.util)
* [web](http://search.maven.org/#search|ga|1|g%3Aorg.apache.aries.web)

# Apache Karaf

[Apache Karaf](http://karaf.apache.org) is a modular OSGi server that integrates very well with Aries. Most aries subprojects can be installed into Apache Karaf using features.
For example **feature:install jndi** installs the Aries jndi modules.

<a name="Samples"></a>
### Samples
The easiest way to use the samples is to download the source zip, navigate
to the appropriate 'assembly' module and run mvn install to download all
the released  binary artifacts. Alternatively you can build the entire
source.

[Aries Samples](http://www.apache.org/dyn/closer.cgi/aries/samples-1.0.0-source-release.zip)
