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

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

HttpCore utilizes Maven as a distribution management and packaging tool.
Version 3.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

To avoid intermittent test failures, it is recommended to have a machine or virtual machine with the following specifications:

Minimum of 2 CPUs.
Minimum of 2GB of RAM.

These are the minimal requirements for stable test execution. In more resource constrained environments some tests may fail intermittently.


(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

httpcore5/target/httpcore5-<VERSION>.jar
httpcore5-h2/target/httpcore5-h2-<VERSION>.jar
httpcore5-testing/target/httpcore5-testing-<VERSION>.jar
httpcore5-osgi/target/org.apache.httpcomponents.httpcore_<VERSION>.jar

where <VERSION> is the release version
