<title>How To Build Axis Project's Website</title>
<h1>How To Build Axis2 Project's Website</h1>
<h2>Installing Maven</h2>
<p>The Axis 2.0 website build system solely depends
<a href="http://maven.apache.org/">Maven</a>.Specifically the build has been 
tested to work with Maven version 1.0.1. To install Maven download the 
distributions and follow the instructions in their documentation. Make sure you 
don't forget to put MAVEN_HOME/bin directory in the path. </p>
<h2>Checking out Axis 2.0</h2>
<p>Checkout latest source from
<a href="http://svn.apache.org/repos/asf/webservices/axis2/trunk/java">here</a> 
using your favorite svn client. If you are a committer get a commiter check out 
from <a href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java">
here</a>.</p>
<h2>Building the site</h2>
<p>type <i>maven multiproject</i> at the root of your project folder. It will take some time to build the whole site and built site will be available under targets/docs</p>

<h2>FAQ</h2>
<ol>
	<li>How can I update a document in the site ?<br> Get a commiter check out. 
	All the documents are in html format under the xdocs folder, and you can 
	change only the documents found under this folder. Change the relevant file 
	and run maven &quot;html2xdoc:transform&quot;. New documentation will be available 
	under target folder.</li>
	<li>How can I add a new document<br>Put the new document in xdocs folder. 
	Change the navigation.xml found under the xdocs folder to put a link to the 
	newly added document. Re-generate the site.<br/>
	Please make sure you have not included any of the illegal characters and your document should be well formed</li>
</ol>
<p>&nbsp;</p>
<p align="right">-- Eran Chinthaka</p>
