Building Apache CXF
=====================

Initial Setup
-------------

1) Install J2SE SDK, which can be downloaded from 
   http://www.oracle.com/technetwork/java/archive-139210.html#javase
   CXF supports most versions newer than 1.7.0_25

2) Make sure that your JAVA_HOME environment variable is set to the newly installed 
   JDK location, and that your PATH includes %JAVA_HOME%\bin (windows) or 
   $JAVA_HOME$/bin (unix).

3) Install Maven 3.1 or newer, which can be downloaded from 
   http://maven.apache.org/download.html. Make sure that your PATH includes 
   the MVN_HOME/bin directory. 


Building
--------

1) Change to the top level directory of Apache CXF source distribution.
2) Set the MAVEN_OPTS environment variable to include more memory
   Unix/Linux/OSX   $> export MAVEN_OPTS="-XX:MaxPermSize=192m -Xmx768M"
   Windows          > set MAVEN_OPTS="-XX:MaxPermSize=192m -Xmx768M"
3) Run
	$> mvn
   This will compile Apache CXF and run all of the tests in the Apache CXF source
   distribution. Alternatively, you can run
         $> mvn -Pfastinstall.
   This will compile Apache CXF without running the tests and takes less
   time to build.
   Depending on the load of remote Maven repositories, you may have 
   to run "mvn" several times until the required dependencies are 
   all located in your local maven repository. It usually takes some time for 
   maven to download required dependencies in the first build.

Building kit
------------
1) From top level, run
         $> mvn -Pfastinstall,everything
   This will build an Apache CXF distribution kit under "distribution/target"
   directory.
