Building HttpComponents AsyncClient 
============================

(1) Requisites
--------------
JDK 1.5+ is required in order to compile and run HttpAsyncClient.

HttpAsyncClient utilizes Maven as a distribution management and packaging tool.
Version 3.0.3 or later is required. 

Maven installation and configuration instructions can be found here:

http://maven.apache.org/run-maven/index.html

(2) Executing test cases

Execute the following command in order to compile and test the components

mvn test

(3) Building packages 

Execute the following command in order to build the JAR packages

mvn package

The resultant packages can be found in the target folders of their respective modules

httpasyncclient/target/httpasyncclient-<VERSION>.jar
httpasyncclient-cache/target/httpasyncclient-cache-<VERSION>.jar
httpasyncclient-osgi/target/org.apache.httpcomponents.httpasyncclient_<VERSION>.jar

where <VERSION> is the release version

(4) Building documentation 

Execute the following commands in order to generate Javadoc:

mvn install
mvn javadoc:aggregate

