<?xml version="1.0"?>
<!---
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<document>

 <properties>
  <title>Getting Started</title>
  <author email="jstrachan@apache.org">James Strachan</author>
 </properties>

<body>

<section name="Getting Started">


<p>
The easiest way to get started with Jelly is to try out the <a href="tutorial.html">tutorials</a>.    
Before you try out any of the tutorials, you'll need to install Maven first.
For more details on how to install Maven please refer to the 
<a href="http://maven.apache.org/">Maven documentation</a>
</p>

<p>
Here's a brief overview of what you need to do. 

<ul>
<li>
Download a binary distribution of Maven.
</li>
<li>
Set the environment variable MAVEN_HOME to point to where you installed Maven
</li>
<li>
Change your PATH environment variable so that it points to MAVEN_HOME/bin
</li>
<li>
Get a source distribution of Jelly. 
The easiest way to do this is (until we have nightly builds working) is to grab a CVS checkout.
Jelly currently resides in the jelly directory inside jakarta-commons.
There are instructions on performing CVS checkouts 
<a href="http://jakarta.apache.org/site/cvsindex.html">here</a>
</li>
</ul>
</p>

<p>
To verify that your Maven installation is working, change directory into your <i>jelly</i> directory 
which should contain a <i>project.xml</i> file required by Maven. Then type
</p>

<source>maven jar</source>

<p>
This should download all the required jars required to build and run the core jelly,
compile all the code and build and run the unit test cases. 
</p>

</section>

<section name="Tag-libraries">
<p> 
  Your next task is to choose the tag-libraries you are interested to and to
  build them. For all of them, you can build using <code>maven jar</code>.
  </p>
<p>
  Beware that some tag-libraries have dependencies that cannot be distributed
  by the maven repository distribution for license reasons. The tag-libraries
    <a href="libs/email/index.html">email</a>,
    <a href="libs/soap/index.html"></a>, and
    <a href="libs/jetty/index.html"></a>
  are known to require such.
  Please browse to their dependency-list in order to download the
  named jars, rename-them, and put them at the appropriate place
  in the maven repository. (you could also delete these directories)
  </p>
  <p>
    Once all dependencies are honoured, you can also build it all using
    <code>maven dist</code>, however, maven may become out of resources;
    changing the environment variable MAVEN_OPTS (e.g. to -Xmx768m...) might help.
    </p>
<p>
Once you've got this far, it might be time to try out one of the <a href="tutorial.html">tutorials</a>    
</p>
</section>


</body>

</document>