Building HttpComponents Client 
============================

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

HttpCore utilizes Maven 2 as a distribution management and packaging tool.
Version 2.2.1 or later is recommended. Maven 3.0.x can also be used 
to build HttpClient, however it is known to be incompatible with the Clover 
plugin used to generate web site content. 

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 and install 
them to the local repository:

mvn install

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

httpclient/target/httpclient-<VERSION>.jar
httpmime/target/httpmime-<VERSION>.jar
httpclient-cache/target/httpclient-cache-<VERSION>.jar
fluent-hc/target/fluent-hc-<VERSION>.jar
httpclient-osgi/target/org.apache.httpcomponents.httpclient_<VERSION>.jar

where <VERSION> is the release version

(4) Building documentation 

Execute the following command in order to generate javadoc:

mvn javadoc:aggregate

Execute the following command in order to generate the tutorial in html and pdf formats

mvn docbkx:generate-pdf docbkx:generate-html

(5) Building distribution assemblies 

Execute the following command in order to build the distribution assemblies

mvn package assembly:assembly

(6) Fix EOL in source files

Fix the archive files so the source files have the correct EOL settings:

mvn antrun:run

(7) Building project web site 

Execute the following command in order to generate the project web site:

mvn site -Dmaven.clover.licenseLocation=<path>/clover.license

where <path> is a full path to Clover license file

ASF committers can obtain a copy of Clover license donated to the ASF from the SVN repository
at the following location:

https://svn.apache.org/repos/private/committers/donated-licenses/clover

