Building HttpComponents Core
============================

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

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

mvn install

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

httpcore/target/httpcore-<VERSION>.jar
httpcore-nio/target/httpcore-nio-<VERSION>.jar
httpcore-osgi/target/org.apache.httpcomponents.httpcore_<VERSION>.jar

where <VERSION> is the release version

(4) Validating packages

Check for binary compatibility with the previous version with:

mvn clirr:check

Check for proper license headers with:

mvn apache-rat:check

(5) 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

